목차

- 버전 비교하기 (diff)

- 작업 되돌리기 (reset / revert)

- 변경 사항 임시저장하기 (stash)

- 브랜치 관리하기 (branch / checkout / merge / rebase)

 

<버전 비교하기>

- git diff : 최근 커밋과 작업 디렉터리 비교하기

- git diff --staged : 최근 커밋과 스테이지 비교하기 (git diff -cached 명령과 같다.)

- git diff <커밋> <커밋> : 커밋끼리 비교하기. <커밋>부분에는 커밋해시가 오거나 HEAD, HEAD^, HEAD~1이 올 수 있다.

             HEAD : 현재 브랜치의 최신 커밋

             HEAD^ 또는 HEAD~1 : HEAD 이전 커밋

             HEAD^^ 또는 HEAD~2 : HEAD의 두 개 이전 커밋

             ^의 개수나 ~ 뒤에 붙는 숫자에 따라 달라짐.

- git diff <브랜치> <브랜치> : 브랜치끼리 비교하기

 

<작업 되돌리기>

- git reset --soft <커밋> : 커밋만 되돌리기

- git reset <커밋> : 스테이지까지 되돌리기 (git reset --mixed 명령과 같다.)

- git reset --hard <커밋> : 작업 디렉터리까지 되돌리기

 

- git revert <커밋> : 취소된 새로운 커밋 만들기

 

<변경 사항 임시저장하기>

- git stash -m "메시지" : 그냥 git stash만 해도 됨. 이렇게 하면 메시지와 함께 임시저장 가능.

(stash 명령은 tracked 상태의 파일에만 사용 가능하다.다시 한번 상기시키기)

- git stash list : 임시 저장된 작업 내역 조회하기

      stash@{0} : On master: 메시지

     이런 형태로 뜬다. 가장 최신 저장된 것이 {} 안에 0이 들어가고, 나중에 저장된 것은 1, 2, 3... 순서대로.

- git stash apply <스태시> : 임시 저장된 작업을 적용하기 (ex. git stash apply stash@{0})

- git stash drop <스태시> : 임시 저장된 작업 삭제하기

- git stash clear : 임시 저장된 작업 모두 삭제하기

 

<브랜치 관리하기>

- git branch <브랜치> : 브랜치 만들기

- git branch : 현재 브랜치 보기

- git checkout <브랜치> : 체크아웃 하기

- git checkout -b <브랜치> : 브랜치 만듦과 동시에 체크아웃하기

- git merge <브랜치> : 현재 체크아웃한 브랜치에 <브랜치> 병합하기

     -> 충돌 시 CONFLICT, Automatic merge failed 등의 메시지가 뜬다.

          이럴 경우 충돌이 발생한 파일에 들어가서

                <<<<<<<HEAD

                (1)

                =====

                (2)

                >>>>>>>><브랜치>

           (1) 또는 (2)의 내용만 남겨두고 나머지를 지우는 방식으로 수정한다.

           그 다음 스테이지에 올리고 커밋하면 성공적으로 병합이 됨.

 

- git branch -d <브랜치> : 브랜치 삭제하기 (현재 체크아웃한 브랜치를 삭제할 수 없으니 다른 곳으로 체크아웃한 후에 삭제한다.)

- git rebase <브랜치> : 브랜치 재배치하기 (현재 체크아웃한 브랜치를 <브랜치>의 최신 커밋으로 이동시킨다.)

 

 

 

(git log --oneline --branches --graph 를 쓰면 재배치한 결과를 커밋당 한 줄로 출력되는 그래프 형태로 확인 가능하다고 한다. 일단은 몰라도 무방)