Skip to content

Latest commit

 

History

History
66 lines (45 loc) · 2.04 KB

되돌아가기.md

File metadata and controls

66 lines (45 loc) · 2.04 KB

amend를 이용하여 되돌리기

$ git commit --amend

직전 커밋을 새로 덮어쓴다. 이전에 있던 커밋은 사라지고 새로 만든 커밋이 자리를 대신한다.
가장 최근 커밋을 변경할 때 자주 쓴다.

ex) hello.md를 작성하고 커밋했다. hello.md를 다시 보니 오타가 발견되었다.
오타를 수정후

$ git add [file] or [.]
$ git commit --amend

revert 사용해서 되돌리기

$ git revert [commit]

혼자서 관리하는 레포는 강제 푸시를 해도 상관 없다. 그러나 공용 레포라면 절대로 강제 푸시하면 안된다.
만약 어떤 커밋을 푸시 후, amend 커밋을 만들었다면 충돌이 난다. 왜냐하면 직전 커밋은 사라지고 새로운 커밋이 대체했기 때문이다.
보통은 git push --force 강제 푸시 한다. 공용 레포라면 git revert를 사용하자.

revert는 대상 커밋과 반대되는 커밋을 만든다. A 커밋이 "hello"라는 단어를 추가한 커밋이라면, revert 커밋은 A 커밋의 반대 커밋이다.

A - B - C

$ git revert A

A - B - C - A'

A' 는 A 커밋을 무효화하는 커밋이다.

reset을 사용하여 되돌아가기

$ git reset --[soft, mixed, hard] [commit]  

git은 세가지 영역을 관리한다. working tree, stage(index), commit

  • soft commit만 되돌린다.

  • mixed commit, stage를 되돌린다.

  • hard commit, stage, working tree를 되돌린다.

되돌리고 나서 다시 앞으로 가고 싶은 경우, 약간 피곤해진다. ref를 뒤져야한다.

브랜치를 만들어서 되돌아가기

$ git checkout -b [브랜치_이름] [대상_커밋]

브랜치를 만들어 되돌아가고 수정 후, 원래 브랜치로 mergerebase하는 방법이다.
장점 : 기존 커밋들을 건드리지 않고 다른 context에서 작업할 수 있으므로 좋다.
단점 : mergerebase할 때 충돌날 수도 있다. 브랜치가 많아진다.