반응형
빨리 감기 병합 실행 취소
실행 취소하려는 git repo를 변경했습니다.
내 자식 저장소는 다음과 같습니다.
A-B---- master
\ /
C-D * develop
나는 develop
브랜치 에 있었고 브랜치와 다르다는 것을 잊고 master
에서 변경 한 다음에 develop
병합 master
한 다음 내 리모컨 ( publish
)으로 푸시했습니다 .
B (공통 조상) 이후 마스터에 변경 사항이 없었기 때문에 git은 빨리 감기 병합을 수행했습니다.
이제 내 저장소는 다음과 같습니다.
A-B-C-D master, develop, remotes/publish/master, remotes/publish/develop.
마지막 병합을 되돌리고 master
B로 복원하고 싶었 습니다.
Git에서 마지막 커밋을 실행 취소하는 방법에서 읽은 내용에서 ? , 나는 분기를 개정 B git reset sha-of-B
로 복원 하는 데 사용 되었습니다 master
.
질문 :
develop
개정 D로 복원 하려면 어떻게합니까 ?- 그런 다음 이러한 변경 사항을 원격 / 게시로 다시 푸시하려면 어떻게해야합니까?
브랜치 마스터를 재설정하면 브랜치 개발을 건드리지 않습니다. 모든 것을 순서대로 평판하려면 다음을 수행해야합니다.
git checkout master
git reset --hard sha-of-B
git checkout develop
git reset --hard sha-of-D
git checkout master
git merge develop --no-ff
- 당신이 합쳐지고 밀린 곳에서 여전히 마스터 에 있다고 상상해보십시오.
git reset --hard @{1}
- 이렇게하면 "마스터" 분기 가 컴퓨터에서 한 단계 뒤로 돌아간 위치 (예 : "B")로 재설정 됩니다.
- 에 대한 개발 은 여전히 "D"에 있어야하기 때문에, 아무것도하지 않고
git push publish develop --force-with-lease=master
- 이것은 일반적인 방법으로 브랜치를 “개발” 을 밀어 붙입니다.
- 또한 안전한 방법으로 얻은 권한으로 분기 "마스터"를 뒤로 밀어냅니다.
--force-with-lease
- 사용하면 다른 사람의 작업을 자동으로 덮어 쓸
--force
수 있으므로 사용하지 않습니다.
당신이 develop
실행했을 때 체크 아웃 된 것 같으면 이것이 당신을 git reset
엉망으로 만든 것입니다.
develop
다음과 같이 수정할 수 있습니다 .
git checkout develop
git merge --ff-only D
이제 master
B로 다시 복원 할 수 있습니다 .
git checkout master
git reset --hard B
돌아가서 develop
푸시하십시오.
git checkout develop
git push develop
참고 URL : https://stackoverflow.com/questions/14308580/undo-a-fast-forward-merge
반응형
'IT박스' 카테고리의 다른 글
목표 C : NSString에서 NSMutableString 변환 (0) | 2020.11.28 |
---|---|
사이드 바를위한 최고의 HTML5 마크 업 (0) | 2020.11.28 |
특정 종속성이있는 gem을 어떻게 알 수 있습니까? (0) | 2020.11.28 |
MVC5, WebAPI2 및 AutoFac이 작동하지 않습니다. (0) | 2020.11.28 |
png8과 png24의 차이점은 무엇입니까 (0) | 2020.11.28 |