'git push 되돌리기'에 해당되는 글 1건

  1. 2018.05.03 깃 커밋 되돌리기
2018. 5. 3. 18:56

서버에 올려보고 속도 체크 해본데서, 커밋한거 올렸었는데, 


속도가 안나와서, 커밋한거를 되돌릴 상황이 발생해 버렸다.


근데, git 저장소를 따로 쓰는 우리에서는 저장소에 접속할순없고....


내 로컬에서 되돌리기를 해서 다시 푸시를 해줘야하는 상황인거다.


그래서 소스트리에서 그냥 "현재브런치를 이 커밋으로 초기화"를 했는데...


원격저장소에는 마지막 커밋이 남아 있어서, 푸쉬가 안된다. 


소스트리가..... 한글이라....'커밋바꾸기'가 맞는지...'재배치'가 맞는지 


몰라서......


그냥 터미널을 열어서 명령어를 쳤다.


터미널 위치는 밑에 사진에 보면 있다.






git revert HEAD  


위 명령어를 치면 메시지 에디터로 들어간다.


그때, 커밋 내용을 쓴다음에 esc키를 누르고 :wq 를 누르면, 메시지 작성에서 나오면서 되돌아같다.


그리고 위 사진처럼 Revert "커밋 메시지" 가 써지고 새로운 커밋이 생성된다.


revert HEAD 명령어는


HEAD에서 변경한 내역을 취소하는 새로운 커밋을 발행함.


(이것은 커밋을 이미 push한 경우에 사용하면 된다.)


커밋 내용을 보면 이전 커밋에 +됬던 내용들이 다시 -로 바뀌어 있다.



여러 커밋을 할때는


git revert [커밋번호] [커밋번호] [커밋번호] 


이렇게 하면 된다.


커밋번호는 다 쓸필요 없이, 앞에 7자리까지만 해도 된다.




위에 방법은 bash에서 하는법이고, 소스트리에서 하고 싶은데....


revert가 한국어로 어떻게 번역한지 모르겠더라....






밑에가 메뉴 영문이다.




reset 은 있는데, Revert가 없다.


Revert가 "Reverse commit...." 이다.


한국말로 커밋 바꾸기 하면 된다.


여기서 알아야 할것은, 


Revert할때, 여러 커밋 되돌릴때는 최신거 부터 순서대로 다 하는게 낫다.


중간에 빼 먹고 하면.... 나중에 merge할때, 충돌날 확률이 크다.


그리고, 


"Merge branch 'master' into  dev "


위와 같은 정보 커밋은 revert 할수 없다.


되돌리기 커밋은 내가 한 커밋만 가능하다.



==================================================================


※ reset과 revert의 차이점

reset은 선택한 버전을 reset할 경우 선택한 버전의 이후 버전을 모두 삭제하고 선택한 버전의 상태로 되돌아간다.

revert는 선택한 버전을 revert할 경우 선택한 버전의 바로 전 버전으로 돌아가는 새로운 commit을 자동으로 실행한다.


※ 여러 버전을 건너뛰어 Revert하게 되면 충돌이 발생한다. 예를 들어, 위 예제에서 "Circle클래스 추가" 버전으로 돌아가고 싶을 경우 최근 버전인 "Circle클래스 수정" 버전부터 차례로 revert하여야 한다.



출처: http://gangju.tistory.com/21 [gangju 개인 블로그]



===========================================================

밑의 내용은 아래 블로그에서 퍼온거다.

http://blog.daum.net/to302/10



git reset HEAD^

git push origin -f


git reset HEAD@{1}

git push origin +master


git reset HEAD^    // 최종 커밋을 취소. 워킹트리는 보존됨. (커밋은 했으나 push하지 않은 경우 유용)

git reset HEAD~2     //마지막 2개의 커밋을 취소. 워킹트리는 보존됨.

git reset --hard HEAD~2    // 마지막 2개의 커밋을 취소. index 및 워킹트리 모두 원복됨.

git reset --hard ORIG_HEAD    // 머지한 것을 이미 커밋했을 때,  그 커밋을 취소. (잘못된 머지를 이미 커밋한 경우 유용)

git revert HEAD    // HEAD에서 변경한 내역을 취소하는 새로운 커밋 발행(undo commit). (커밋을 이미 push 해버린 경우 유용)



Posted by Tyson