git 취소하고 싶을때 방식 4종류

1. 로컬 변경 취소

$ git checkout .
  • 신규 추가한 파일에 관해서는 삭제되지 않으므로, 완전히 원래대로 되돌리려면 따로 삭제해야 한다.
$ git clean -df .

 

2. add를 취소

$ git reset HEAD .
  • 이것만 하면 add 상태밖에 취소되지 않기 때문에,다른 변경도 취소하고 싶으시다면, 1. 로컬 변경 취소 작업도 할 필요가 있다.

 

3. commit 취소

$ git reset .
  • mode의 디폴트는 --mixed이기 때문에변경한 파일은 모두 그대로이고 git의 이력만 바뀔 뿐. 변경한 파일을 포함하여 모두 지정된 commit상태로되돌리고 싶은 경우 mode에 --hard를 지정한다.
  • 또, 이쪽도 --hard를 지정했다고 해도 신규 추가 파일은남은 채로 있기 때문에완전히 되돌리려면 별도로 삭제해야 한다
$ git reset --hard <commit_Id>

 

4. push 취소

$ git revert <commit_Id>
$ git push
  • 이것은 undo한다는 느낌 보다,지정된 commit까지의 변경 지점을 commit하는 것.그렇기 때문에 revert 뒤에 push 하는 걸로 Remote가 실질적으로 undo를 한 것 같은 상태가 된다.
  • 참고로 복수의 커밋을 취소하고싶을때는**-n**옵션으로 지정할 수 있다.
$ git revert -n <commit_Id>
$ git revert -n <commit_Id>...
$ git commit
$ git push
  • n은 --no-commit과 동일한 옵션

 

git merge했지만 역시 그만두고 싶을 때의 방식 4종류

1. git 머지(병합) 했더니 충돌 역시 그만 둬야지!

  • 충돌을 편집해서 수정하지 않을 경우 한정
$ git merge --abort
  • 병합전의 상태로 되돌린다.

 

2. git 머지(병합) 했더니 충돌해서 수정하려고 시도했지만, 중간에 그만두고 싶을때!

$ git reset --hard HEAD
  • 편집한 내용도 머지(병합)도 모두 취소됩니다.

 

3. 머지(병합) 모두 완료했다. 근데 역시 되돌리고 싶을때

  • revert 커맨드를 사용하여 Merge commit을 취소합니다.
$ git revert -m 1 <merge_commit>
  • 머지 커밋의 경우 부모가 두 가지로 나뉩니다.revert 명령어를 사용할 경우 revert 한 결과,어느 쪽 부모에 되돌릴지를 -m숫자로 지정합니다.숫자가 부모를 나타냅니다.
  • 이 방법의 경우 취소한 Merge commit에 포함되어 있던 변경을다시 Merge할 수 없게 됩니다.

<aside> 💡 예)브런치 A에 대하여 브런치 B를 마지↓머지(병합) 커밋을 revert하여 브랜치 A 상태로 되돌린다↓브랜치 A에 대하여 브랜치 B를 머지(병합)할 수 없음(변경이 받아들여지지 않음)

</aside>

 

4. 머지(병합) 모두 완료했다. 근데 역시 되돌리고 싶을때

$ git reset --hard ORIG_HEAD
  • 머지(병합)하기 전의 HEAD로 돌아갑니다.
  • 이 방법은 한번 생긴 커밋을 취소하는 것입니다.revert 명령과는 달리 '커밋을 취소했다'는 이력도 남지 않습니다.일단 push 등을 수행하고 다른 개발자에게 공개된 커밋을 취소하는 것은 기본절대 해서는 안 됩니다.
  • 자신의 로컬만으로 머지(병합)해 보았지만 (push는 하지 않는 경우),역시 그만두는 싶을 경우에만 사용합시다!

 

5. Git 잘못 업로드된 Commit 히스토리 관리하기

$ git reset HEAD^
$ git commit -m "커밋 메시지" 
$ ggit push origin master -f

 

6. Commit History를 모두 삭제하고 초기 상태로 되돌리기 (주의)

$ rm -rf .giit$ git init $ git add -A
$ git commit -m "커밋 메시지"
$ git remote add origin [저장소  URL]
$ git push ~~u -~~ force origin master

 

참고 : https://jootc.com/p/201909143109

 

[Git] 커밋 히스토리 삭제(초기화)하여 다시 푸시하기 - JooTC

Git 커밋 히스토리 삭제 git commit 초기화 방법 Git을 사용하여 소스코드 관리를 하는 개발자는 자신의 리포지토리(Repository)가 공개 상태일 때 간혹 민감한 정보가 포함된 코드가 커밋(commit)되는 경

jootc.com

 

Notion : https://noyclah.notion.site/Git-5789042af1834f0aad78738124bc3dd2

 

Git 다양한 상황에 따른 해결방법

git 취소하고 싶을때 방식 4종류

noyclah.notion.site

 

'공부 > 네트워크 관련' 카테고리의 다른 글

터미널과 서버  (0) 2022.06.01
암호화 / 복호화  (0) 2022.06.01
Git(깃)  (0) 2022.06.01
Process 와 Thread  (0) 2022.06.01
OSI 7계층과 TCP/IP  (0) 2022.06.01