소스를 수정하고 commit 한 후에 리모트 레파지토리에 수정사항이 생겨 다시 pull 받았더니 commit 이 두개로 생성되었다. (Your branch is ahead of 'origin/master' by 2 commits.)

로그를 확인해보니 내가 commit 한 버전 1개와 리모트 소스를 pull 받으면서 생긴 merge commit이 추가로 생긴거였다. 처음부터 merge commit 을 남기지 않으려면 pull 받을때 --rebase 옵션을 주면 생기지 않는다고 한다. (git pull --rebase)

내 경우에는 이미 merge commit이 생겨버려서 reset으로 2번째 전 commit으로 돌아가서 다시 진행했다.

 

 

[ 진행순서 ]

$ git commit -m [msg]

$ git pull 

Your branch is ahead of 'origin/master' by 2 commits. 

 

[ 해결 ]

$ git reset HEAD^^ (2개 이전까지 commit 취소) > 변경된파일은 그대로 

$ git add .

$ git commit -m [msg]

$ git push origin HEAD:refs/for/master 

 

 

[ commit 취소명령 ]

$ git reset HEAD^ : 마지막 커밋 취소 but, 변경한 파일은 그대로 존재 
$ git reset --hard HEAD^ : 마지막 커밋 취소하고 변경전 파일로 복구
$ git reset HEAD~n : 마지막 n개 커밋 취소 but, 변경한 파일은 그대로 존재 
$ git reset --hard HEAD~n : 마지막 n개 커밋 취소하고 변경전 파일로 복구

 

 

[ commit amend 옵션 ]

- 코드리뷰 후 수정사항 반영할때 사용 (Change-Id는 유지, Commit-Id는 새로 생성)

- 현재 브랜치의 마지막 커밋을 새로운 커밋으로 대체 (변경이력은 없어지지만 변경된내용은 누적)

$ git commit --amend

$ git push origin master 

 

 

 

참고글 

http://logonluv.blogspot.com/2015/02/git-commit-reset.html

'프로젝트 관리 툴 > GIT' 카테고리의 다른 글

Git Reset, Revert 차이  (1) 2019.08.19
Git Log 옵션  (0) 2019.08.19
Git Branch 관리 명령  (0) 2019.08.19
github 간단 명령어  (0) 2019.01.10

+ Recent posts