私はリベースとリセットをしたくないと思いますが、これはマージ専用のアプローチです。
2つのブランチmaster
とfeature
があるとします。 あなたがmaster
に機能をマージすることを決定したので、:
今
$ git merge feature
、あなたはマスター上のすべてのごfeature
の変更を持っています。私は最も困難なシナリオを想定しています - 両方のブランチでマージした後にコミットがあります。しかし、突然あなたは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と立方メートル。したがって、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-HE)とバックfeature
にそれをマージしなければならない問題を解決するために
すでに、しかし、あなたは、あなたがしたい場合は、それを保つことができる:
は
$ git branch -d feature-revert
あなたはそれをバックマージするfeature
通常、通常のワークフローにmaster
からのすべての変更をもたらすことに、注意する必要があります。
feature
で修正した後、いつでもいつでもいつでもmaster
にマージすることができます。
出典
2013-07-23 10:53:36
kan
復帰しているマージコミットですか?もしそうなら、http://stackoverflow.com/questions/1078146/re-doing-a-reverted-merge-in-gitを見てください。 – jszakmeister
ああ、私は問題を見る、あなたはあなたの支店にメインラインをマージしている。私は上記のリンクがあなたのためのトリックを行うと思います。ブランチで「元に戻す」必要があります。 – jszakmeister
ohh。はい、そこに記載されているもののいくつかは参考になります –