728x90
반응형
Merge한 파일들을 복구하고 싶은 경우가 있다.
예)
- origin 작업 내용을 직접 upstream에 푸쉬한 경우
- PR 리뷰 중 실수로 머지한 경우
- commit, push한 파일을 수정하거나, 취소하고 싶은 경우
Merge를 되돌리는 방법 중 revert, force 를 사용하여, 코드를 복구 해보자!
* 해당 작업은 저장소를 통째로 날리거나
* 커밋한 코드가 날라가거나
* 협업자들 버전이 충돌될수 있다.
!!! 개인 작업용, 혹은 진짜 필요 시에만 실행하는 것이 좋다 !!!
!!! 커밋 / push 전에는 반드 시 저장소와 변경내용을 확인 하는 습관을 가지자 !!!
force
- 강제 push한다는 말이다.
- push force는 원격 저장소의 내용이 로컬 저장소의 내용과 일치하도록 원격 저장소의 내용들을 강제로 덮어쓰게 하는 것이다.
실행 순서
- upstream 저장소의 최신 히스토리를 따로 백업 해둔다.
- 나중에 저장소가 날라갔을때 백업용
- 혹은, 작업 중인 origin이력이 날라갔을때 백업용
- origin 히스토리와 upstram 히스토리가 동일한지 확인 한다.
- origin 작업 내용는 push 해서 저장소에 현행화 한다.
- reset시 local에서는 시점이 돌아가지만 origin 저장소에는 작업내용이 올라가 있기때문에, 나중에 origin에서 pull 받으면 작업 내용이 초기화 되지 않는다.
- 돌리고 싶은 시점의 히스토리(A)를 확인한다.
- => push를 하지못하는 작업 중인 코드가 있다면, 스태시에 저장해 놓자.
- (A)까지 origin 저장소를 초기화 한다. (reste)
- 소스트리로 한 경우 (모든 작업 상태내 변경사항 버림) 선택 필요.
- push --force 명령어를 실행하여 upstram 저장소에 origin history를 덮어씌운다.
- 덮어씌울 저장소 확인 필요
git push --force upstream master
// git push --force [덮어씌울 원격저장소] [덮어씌울 원격저장소 브랜치]
6. upstream 저장소에 히스토리가 origin 히스토리로 덮어 씌워졌는지 확인 한다.
7. 이후에는 원하는 작업을 진행
- PR을 재요청하거나
- 코드를 수정하거나
- ...
728x90
반응형
'dev tools > Git' 카테고리의 다른 글
[Git] Git 명령어 CLI 정리 (0) | 2024.06.17 |
---|---|
[Git] 좋은 커밋 메시지 작성하기, 정책 만들기(git, commit, convention) (0) | 2024.05.22 |
[Git] Git Branch 전략- gitflow 와 네이밍 (1) | 2023.12.27 |
[Git] 지워진 커밋 복구하기(reflog), HEAD 브랜치 삭제 복구하기 (0) | 2023.12.19 |
[Git] 로컬에서 변경한 파일명이 깃허브에서 적용 안되는 이슈 (0) | 2023.12.16 |