SNS를 보다가 누군가 공유해주신 흐름도가 유용해보여서 가져왔다.
특히 올해 초에 feature 브랜치가 아닌 develop 브랜치에 commit과 push를 실수로 한 적이 있었는데..
진짜.. 식은 땀을 줄줄 흘리며 서치 했던 기억이 난다.
잊지말고 기록 해놔야겠다.
working directory
---(add)---> stage area
---(commit)---> local repository
---(push)---> remote repository
스테이징 된 파일들을 unstage로 변경하자
git reset HEAD
//add한 파일 전체 취소
git reset HEAD [file]
//특정 파일을 unstage로 변경
git log
//commit 목록 확인
//[방법 1] : commit 취소, 해당 파일은 stage 상태로 작업 디렉터리에 보존
git reset --soft HEAD^
//[방법 2] : commit 취소, 해당 파일은 unstage 상태로 작업 디렉터리에 보존
git reset --mixed HEAD^
또는
git reset HEAD^
또는
git reset HEAD~2
// 마지막 2개의 commit 취소
//[방법 3] : commit 취소, 해당 파일은 unstage 상태로 작업 디렉터리에서 삭제 - 모두 날아가니 주의하자
git reset --hard HEAD^
git commit --amend
git reset HEAD^
git log -g
또는
git reflog
//목록을 보고 commit id를 확인하자
git reset HEAD@{number}
또는
git reset [commit id]
git commit -m "cancel push"
git push origin [branch name] -f
또는
git push origin +[branch name]
[참고]