리베이스 및 리셋을 원하지 않는다고 가정합니다.이 방법은 병합 방식입니다.
두 개의 분기 master
및 feature
이 있다고 가정합니다. 지금
$ git merge feature
을 당신은 마스터에 대한 모든 feature
변경 사항이 : 그래서, 당신은 결정했습니다 는 master
로 기능을 병합합니다. 가장 어려운 시나리오를 가정합니다. 두 분기를 병합 한 후 커밋이 만들어집니다. 그러나 갑자기 아무것도 작동하지 않는 것을 볼 수 있습니다. feature
, 모두 깨졌으며 되돌리기로 결정했습니다. 귀하의 역사는 (당신이 git log --graph feature master
로 볼 수)입니다 :
* commit 838f29fda2333bdbfc0d1be44d2387e6119dc4e8
|
| f3
|
| * commit 58d1e3f0e032cc77d4ab2bbf0bdfe6407b96b7e6
| |
| | m3
| |
| * commit afb600fe382befe095f9b8a6e9eef98be25c929b
| |\ Merge: 5cddc52 8660a59
| |/
|/|
| | Merge branch 'feature'
| |
* | commit 8660a59eeb13f9b3447846ba6977140f7c86c7a4
| |
| | f2
| |
* | commit 6f76e2288d69808b97981340198fd8044ab47630
| |
| | f1
| |
| * commit 5cddc528de424a01d1d18552ddea93435618e2f7
| |
| | m2
| |
| * commit fa6ebb76f9f0308f7dcd1148503534668fa15358
|/
|
| m1
|
* commit 4e3aa05d6f46eb14bbbc253a42325e9a53a3393e
공지 사항 병합 이후 수행 된 커밋 F3 및 m3. 따라서 feature
의 변경 사항 만 신중하게 삭제해야합니다 (master
).
마스터베이스 (매개 변수 -m1
)를 유지하면서 master
에서 병합 완료를 되돌릴 수 있습니다. 그것을 달성하기 위해 내가 병합 점을 기준으로 새로운 지점을 만들고 그 안에 복귀 :
$ git checkout -b feature-revert afb600fe
$ git revert -m1 HEAD
지금, 우리는 지점 feature-revert
에 되돌림 변화가있다. 지금은 간단 단지 병합하여 마스터에 넣어 :
$ git checkout master
$ git merge feature-revert
그래서, 순간에 master
이 feature
에서 아무것도하지 않습니다. 그러나 나중에 기능을 다시 병합하려는 경우 되돌려 진 모든 변경 사항은 병합되고 되돌아 와서 마스터에서 손실됩니다.나는 우리가 그것을 합병으로 우리는 더 이상 가지를 필요로하지 않는 가정
$ git checkout feature-revert
$ git revert HEAD
$ git checkout feature
$ git merge feature-revert
:
는
되돌리기을 되돌릴 (HE-그는)과
feature
로 다시 병합해야하는 문제를 해결하기 위해 이미,하지만 당신은 당신이 원하는 경우를 유지할 수 :
는
$ git branch -d feature-revert
당신은 그것을 다시 병합하는 feature
보통 일반 워크 플로우에 master
로부터의 모든 변경을 가져 오는, 알고 있어야합니다.
이제 feature
에서 수정 한 후 언제든지 평소와 같이 master
에 다시 병합 할 수 있습니다. 변경 사항을 git revert
때
~Mi
의 복귀는,이 병합되어 당신이 복귀하고 커밋? 그렇다면 http://stackoverflow.com/questions/1078146/re-doing-a-reverted-merge-in-git을보십시오 – jszakmeister아, 문제가 보입니다. 메인 라인을 브랜치에 병합하는 것입니다. 위에서 제공 한 링크가 당신에게 트릭을 줄 것이라고 생각합니다. 브랜치에서 "되돌리기"를 되돌려 야합니다. – jszakmeister
오. 좋아, 거기에 언급 된 것들 중 일부는 도움이 보입니다 –