본문 바로가기
dev tools/Git

[Git] 깃 저장소에 commit, merge 코드 복구 하기(소스트리, gitbash)

by 신림쥐 2023. 12. 18.
728x90
반응형

Merge한 파일들을 복구하고 싶은 경우가 있다.

예)

- origin 작업 내용을 직접 upstream에 푸쉬한 경우

- PR 리뷰 중 실수로 머지한 경우

- commit, push한 파일을 수정하거나, 취소하고 싶은 경우

 

 

Merge를 되돌리는 방법 중 revert, force 를 사용하여, 코드를 복구 해보자!

 

* 해당 작업은 저장소를 통째로 날리거나

* 커밋한 코드가 날라가거나

* 협업자들 버전이 충돌될수 있다.

 

!!! 개인 작업용, 혹은 진짜 필요 시에만 실행하는 것이 좋다 !!!

!!! 커밋 / push 전에는 반드 시 저장소와 변경내용을 확인 하는 습관을 가지자 !!!

 

force

- 강제 push한다는 말이다.

- push force는 원격 저장소의 내용이 로컬 저장소의 내용과 일치하도록 원격 저장소의 내용들을 강제로 덮어쓰게 하는 것이다.

실행 순서

 

  1. upstream 저장소의 최신 히스토리를 따로 백업 해둔다.
    1. 나중에 저장소가 날라갔을때 백업용
    2. 혹은, 작업 중인 origin이력이 날라갔을때 백업용
  2. origin 히스토리와 upstram 히스토리가 동일한지 확인 한다.
    1. origin 작업 내용는 push 해서 저장소에 현행화 한다.
    2. reset시 local에서는 시점이 돌아가지만 origin 저장소에는 작업내용이 올라가 있기때문에, 나중에 origin에서 pull 받으면 작업 내용이 초기화 되지 않는다.
  3. 돌리고 싶은 시점의 히스토리(A)를 확인한다.
    1. => push를 하지못하는 작업 중인 코드가 있다면, 스태시에 저장해 놓자.
  4. (A)까지 origin 저장소를 초기화 한다. (reste)
    1. 소스트리로 한 경우 (모든 작업 상태내 변경사항 버림) 선택 필요.
  5. push --force 명령어를 실행하여 upstram 저장소에 origin history를 덮어씌운다.
    1. 덮어씌울 저장소 확인 필요
git push --force upstream master
// git push --force [덮어씌울 원격저장소] [덮어씌울 원격저장소 브랜치]

 

 

 

6. upstream 저장소에 히스토리가 origin 히스토리로 덮어 씌워졌는지 확인 한다.

 

7. 이후에는 원하는 작업을 진행

  1. PR을 재요청하거나
  2. 코드를 수정하거나
  3. ...
728x90
반응형