Heesung Yang
[명령어] git commit
commit 취소
# 최종 커밋을 취소. 워킹트리는 보존됨. (커밋은 했으나 push하지 않은 경우 사용)
~$ git reset HEAD^
# 마지막 2개의 커밋을 취소. 워킹트리는 보존됨.
~$ git reset HEAD~2
# 마지막 2개의 커밋을 취소. index 및 워킹트리 모두 원복됨.
~$ git reset --hard HEAD~2
# 머지한 것을 이미 커밋했을 때, 그 커밋을 취소. (잘못된 머지를 이미 커밋한 경우 유용)
~$ git reset --hard ORIG_HEAD
# HEAD에서 변경한 내역을 취소하는 새로운 커밋 발행(undo commit). (커밋을 이미 push 해버린 경우 유용)
~$ git revert HEAD
# 마지막 commit 메시지 수정
~$ git commit --amend
# commit 시 diff 내용 출력
~$ git commit -v
# commit 합치기
# 마지막 2개의 commit 을 하나로 합치기 위한 창이 뜸
#
# pick 509d675 Add svn-ssl-error-centos
# pick 3312e8c change kor to eng
#
# 두 번째 라인의 `pick` 을 `squash` 로 변경하고 저장하면 commit msg 수정하는 단계로 넘어가고 commit msg 수정 후 저장하면 완료
~$ git rebase -i HEAD~2
# commit 나누기
# 마지막 2개의 commit 중 나누고 싶은 commit 을 `edit` 로 변경
#
# pick 509d675 Add svn-ssl-error-centos
# edit 3312e8c change kor to eng <<< edit 로 변경
#
# `git reset HEAD^` 명령어로 unstage 시킴
# commit 하고 싶은 내용만 골라서 add 후 commit -> commit 1개 생성
# 위 과정 반복
# commit 완료 후 `git rebase --continue` 명령어로 종료
~$ git rebase -i HEAD~2
특정 branch의 commit만 골라서 master branch에 merge 하기 (Cherry-pick)
- new-feature 브랜치의 일부 commit 만 master 에 적용
# checkout to new-feature
~$ git checkout new-feature
~$ git log
f0607f24c104b01b9dd2b603bf3c4aa25f90386a commit meesage 2 # <- merge 하고 싶은 commit
10d84f621e027a59b0c27a255f891aa4c078b06c commit message 1
~$ git checkout master
~$ git cherry-pick f0607f24c104b01b9dd2b603bf3c4aa25f90386a
commit 작성자 수정
# rebase 모드 진입, 수정하고자 하는 commit의 pick 부분을 edit로 변경
~$ git rebase -i origin/master
# 매 commit 마다 변경 후 continue. 반복
~$ git commit --amend --author="Heesung Yang <someone@example.com>"
~$ git rebase --continue
commit 변경사항 보기
# git show <commit id>
~$ git show 07d2fca
Previous post
[명령어] git tagNext post
소스코드 내에(텍스트 파일) vim 옵션 설정하기