master branch 를 uptream 의 latest version 으로 update 시키기
1
git pull --ff upstream master
여러 commit 을 하나로 합치기(squash)
1
git rebase -i HEAD~[commit 개수]
.gitconfig에서 설정해둔 editor 창이 나타난다. 기준이 될 맨 위의 한 commit 만 pick으로 두고 나머지는 squash라는 명령어로 바꿔준다. :wq 명령어를 통해 저장하고 종료한다. 그러면 또 다른 editor 창이 나타나는데, commit message 를 설정하는 editor 이다. 원하는 commit message 를 입력하고 :wq 명령어를 통해 저장하고 종료해주면 squash 가 된다.
git history 출력하기
1
git reflog
바로 이전 commit 에 새로운 파일 변경 사항을 추가하기
1
git commit -C HEAD --amend
cf> 만약 push 를 한 상태라면 -f옵션을 통해서 push 를 해줘야 한다. commit 을 새로 생성하지 않고 변경사항을 추가하는 것처럼 보이지만 내부적으로는 새로운 커밋이 생기는 것이기 때문에 push 된 commit 과 다른 commit 이다.
파일의 변경 이력을 무시해서 stage 에서 임시로 제외하기
1
git update-index --assume-unchanged [파일명]
파일의 변경 이력을 무시해서 stage 에서 임시로 제외한 상황을 되돌리기
1
git update-index --no-assume-unchanged [파일명]
현재 branch 에서 변경 사항 커밋없이 저장해두기
1
git stash
저장해두었던 변경 내역 불러오기
1
git stash pop
다른 branch 의 특정 commit 가져와서 merge 하기
1
git cherry-pick [COMMIT_HASH_NUMBER]
upstream 제거하기
1
git branch --unset-upstream
Status Git command
상황 1. conflict 가 발생하는 상황
여러 가지 방법이 있지만 그 중 두 가지.
1 2 3 4 5 6 7 8 9
git merge upstream/master (resolve conflict in editor) git add src git commit git rebase upstream/master (resolve conflict in editor again) git add src git rebase --continue git push -f upstream YOUR_BRANCH_NAME
or
1 2 3 4 5 6
git fetch upstream git rebase upstream/master (resolve conflict) git add . git rebase --continue git push -f origin [YOUR_WORKING_BRANCH_NAME]
상황 2. 과거 commit 에 fix 한 commit 이 존재하여 이 commit 순서를 정렬하고 싶은 상황
어떤 commit 이 이미 올라갔는데 그 commit 에 해당하는 수정 사항이 발생하면 그에 해당하는 fix commit 을 추가할 경우가 있다. 이 때, commit 의 순서가 난잡해지는데 이 경우,fixup과 autosquash command 를 사용한다.
1
git commit --fixup [HASH]
이렇게 해서 해당 fix commit 을 추가해놓은 다음에
1
git rebase -i --autosquash [HASH]
위 명령어를 통해서 squash 해주면 커밋 순서도 정렬되면서 하나의 commit 으로 squash 된다. 위 명령어에서 HASH란 어느 커밋부터 squash 를 할 것인가를 의미한다.
cf> fixup 과 squash 그리고 squeeze 의 차이점 squash는 새로운 인터페이스가 열리면서 commit message 도 수정(포함 또는 배제)할 수 있다. fixup은 commit message 를 pick한 commit 에 대해서만 적용한다. squeeze는 squash 하고자 하는 모든 commit message 를 포함하면서 squash 한다.
알아두면 쓸모있는 Git Tip
Git command alias
Git을 설치한 디렉토리에는 .gitconfig 파일이 존재한다. 이 파일에서 자주 사용하는 명령어에 대해서 alias 를 지정해줄 수 있다.