본문 바로가기
git

깃으로 관리하기(유튭 얄코정리)

by 킹차니 2021. 2. 18.

먼저 소스트리, 깃, vscode를 가지고 실행한다.

 

 

1. 내가 작업할 파일을 만든다. git을 연습할 파일이기 때문에 git-prac폴더를 데스크톱에 만들었다.

 

2.git-prac파일을 vscode로 열고, 그 안에 파일(내용)을 추가한다.파일 두개를 만들었는데 하나는 cat이라는 파일을, 다른 하나는 mouse라는 파일을 만들었다.

 

3. 이제 이 파일을 깃이 관리하게 만들어보자!

    터미널을 열어 git-prac이 위치한 경로를 찾아 들어간다. (파일을 터미널에 드래그하면 됨.)

 

4. 터미널에서 다음 명령어 실행.

    git init

  git config user.name

  git config user.email

이렇게하면 git-prac파일에  .git파일이 생성되고 이제 git-prac을 git이 관리하게 되었다. 이제 저 git폴더에 시공간이 저장된다. (초기에 .git파일은 숨겨져있는데 맥 기준 command + shift + > 세개를 눌러주면 보인다.)

 

5. 이제 우리는 현재 두 개의 파일(cat, mouse)의 시점을 타임캡슐에 저장해놔야한다. 이렇게 타임캡슐에 저장해 놓으면 미래에 우리가 앞의 두 파일이 저장된 시점으로 언제든 다시 돌아올 수 있다.

 

우선 현재 상태를 보기 위해 git status  명령을 해보자. 그럼 다음과 같은 화면을 볼 수있다.

왼쪽은 터미널, 오른쪽은 소소트리의 상태이다.

 

그럼 위와 같이 아직 commit하지 않은 파일들이 나온다. 저기에 저렇게 빨간색으로 뜨는 것은 저러한 파일이 만들어졌다는 사실을 알려주는 것이다. 이제 진짜 타임캡슐에 담아보자.

 

6. git add -A를 명령하면 위의 빨간 파일들을 모두 타임캡슐에 담겠다는 것이다.

 

git add -A를 통해 모든 파일을 선택했고, git status를 명령하면 모든 파일이 커밋될 준비를 마추었다. 

git commit -m "First Commit"

위 명령은 커밋한다는 명령이고, -m을 붙이면 커밋한 내용에 대해서 설명을 해줄 수 있다.

 

 

드이어 우리의 첫번째 타임캡슐을 만들었다.

 

7. 여기서 이제 git status를 명령하면 더는 담을게 없다고 나온다.

 그리고 이제 git-prac 파일에 dog이라는 새로운 파일을 만들어보자.

 

터미널에서 git status를 명령하면 커밋할수 있는 하나의 파일이 있다고 하고, 소스트리에서는 친절하게 바로 파일하나다 올라온다. 소스트리에서는 네모에 체크하고 커밋하면 된다.

이번에는 소스트리를 이용하여 커밋해 보았다.

 

현재상황:   (아래에 화살표가 아니라 1임)

 

8.이제 더 큰 변화를 줘보자 cat파일을 삭제, mouse의 이름을 micky로 변경, pangin파일 추가!

그리고 git status명령을 하면 무엇이 삭제,변경,추가 되었다는 사실이 타임캡슐 목록에 나온다.

 

이제 소스트리를 통해 커밋을 하고 git log를 명령하면 커밋된 내용들이 나온다.

소스트리의 히스토리를 눌러보면 보다 쉽게 어떻게 변경되었는지가 나온다.

 

현재 진행상황:

 

7. 이제 과거로 돌아가보자.

과거로 돌아가는 방법에는 과감한 방법과 신중한 방법이 있는데, 

과감한 방법은 ADD MODIFY DELETE의 흔적을 완전히 지우고 ADD DOG로 가는것이다.

 

git reset 주소여섯자리 --hard 명령어를 수행해보자. 그럼 과거로 돌아가진다.

현재 위치는 ADD DOG이라고 나오고, 소스트리에서도 6번의 ADD MODIFY DELETE가 사라진 것을 볼 수 있다.

git-prac 파일에도 팽귄파일이 사라졌다.

이 방법은 다시 미래시점으로 돌아가지 못하는 방법이다.

 

8. 이제는 신중하게 과거로 돌아가는 방법을 써보자 일단다시 ADD MODIFY DELETE에서 한 내용을 되돌려 놓고 시작한다.

일단 git log로 일련번호를 확인한다. 이번에는 돌아갈 시점이 아닌 취소할 시점을 찾는다.(가장 최근 것을 고른다.)

git revert 일련번호  이렇게 명령하면 새 커밋 명령을 작성하는 창이 뜬다.

그러면 그대로 저장하겠다는 vi명령어  :wq 를 입력해준다.

그러면 아까 reset했을 때와 마찬가지로 파일들이 과거상태로 돌아와있다.

그런데 git log를 통해 확인해보면 reset처럼 이 시점 이후가 지워진게 아니라 새 캡슐이 만들어진 것을 볼 수 있다.

위의 소스트리를 봐도 확인이 된다.

 

소스트리를 더 자세하게 보면 맨 위의 변경을 아래가 상쇄시킨 것을 볼 수 있다.

완전 반대!!!

 

현재상태:

 

 

 

 

그럼 reset으로 다시 미래로 돌아갈 수 있다.

저거 누르고 hard선택. 

 

그럼 이렇게 제일 미래의 시점에서 전 시점을 없애고 제일 미래시점으로 커서가 이동한다. 

 

그리고 다시

제일 미래시점(현재)에서 우클릭하고 커밋 되돌리기를 누르면 

 

위에서 보듯 제일 미래의 시점에서 한 단계 전인 시점을 되돌릴 수 있다.

 

 

 

 

이제 평행 우주를 만들어보자!!!

 

 

요런식으로!!

 

branch는 현 시점에서 두 미래로 분기하겠다는 의미이다.

 

1. git branch my-iead :   my-idea라는 브랜치를 만들어보자.

2. git branch

위 두 명령어를 실행하면 my-idea와 master의 두 개의 브랜치로 나누어진 것을 볼 수 있다.

근데 현재 우리는 master우주에 있다. 

 

3.  git checkout my-idea  :  를 입력해서 my-idea우주로 넘어가자.

vscode파일을 보면 아무 변화가 없어보이는데 우주를 넘어가면 원 상태를 그대로 가지고 가기 때문이다 (위에 위에 유튜브 화면 스샷처럼!)

소스트리를 봐도 두개의 브랜치로 나뉜것을 볼 수 있다.

 

 

그럼 이제 이 새로운 평행우주에서 나만의 작업을 추가해보자!!

 

mouse를 삭제하고 dinosaur을 추가하자!

그리고 위의 수정내용을 커밋하자.

1. git add -A

2. git commit -m "ADD dino"

 

그리고 이렇게 my-idea우주에서 master 우주로 돌아가야한다면

 

3. git checkout master   : 이 명령을 하면 다음과 같이 vscode에 dino를 추가하고 mouse를 삭제한 내용이 없는 원래 우주(master)로 돌아간 것을 볼 수 있다.

 

이제 한번 소소트리에서 브랜치-브랜치더보기 에서 my-idea를 더블클릭하여 my-idea우주로 이동한 후 새 브런치를 이어가보자.

my-another-idea라는 새로운 브랜치가 생성되었다.

my-another-idea는 my-idea에서 파생된 브랜치라 my-idea의 상태를 그대로 가지고갔다.

 

현재 상황:

 

 

my-another-idea에서 cat파일을 수정하고 타임캡슐에 묻자

1. git checkout my-another-idea

2. git add -A

3. git commit -m "EDIT cat name"

 

소스트리로 세가지 우주를 왔다갔다 할 수 있다.

 

 

 

마스터로 가보자!

이제 한번에 합치는 작업을 할 것이다.

1. master의 dog파일 내용을 변경하고 커밋.

 

 

2. my-another-idea의 mouse는 빼고 dino를 추가하고 cat이름을 변경한 아이디어를 살리고!

위 처럼 메인프로젝트(master)에 적용하자!!

 

 

일단 마스터 브랜치로 돌아온다.

1. git checkout master

2 . git merge my-another-idea   : git  merge  <현재있는 우주에 합칠 우주명>

 

이렇게 하고 vscode로 가보면 내용이 변경된 것을 알 수 있다.

그리고 

git log --graph --all --decorate   :를 명령하면 시각화된 작업내역을 볼 수 있다.

 

 

만약 merge를 한줄에 딱 깔끔하게 하고싶다면 merge 대신 rebase를 명령하자

git rebase my-another-idea   

그러고 다시 git log --graph --all --decorate를 명령하면 깔끔한 한 줄을 볼 수 있다.

 

 

추가로 다 쓴 브랜치를 삭제할 떈

git branch -D <브랜치 명>

우리의 예시에선 my-idea를 삭제해보자.

git branch -D my-idea