質問

これについての質問がたくさんあることを知っていますが、私はまったく探している答えを見つけることはできません。

タスクブランチをマスターにマージしたばかりで、私はリモートマスターブランチへの変更をプッシュする準備が整いました。しかし、それらは2つのコミットとして表示されています:

    commit 878c07412aab6a6b06b7fc8dd84c2418cc4f31d8
Merge: 9ffa590 c9f5552
Author: ***
Date:   Mon May 21 16:02:36 2012 +0100

    Merge branch 'modelUpdate4'

    Conflicts:
        ***.xcodeproj/project.pbxproj

commit c9f5552862872673317701c3dffd7fb6b6daa02c
Author: ***
Date:   Mon May 21 15:03:21 2012 +0100

    Modified model according to requests.  Repopulated seeded database.
.

これはGITログの出力であり、私が1つとして投げたい2つのコミットです。しかし、私がするとき:

git rebase -i HEAD~2
.

実際には、4つの4つの4つのコミット(そしてプッシュ)コミットを表示します。私の支店がどのように併合されているか誤解していますか?再生を試してみてください。-iこれはGitログリストの最初のコミットを表示します。

ありがとう!

役に立ちましたか?

解決

あなたは4つのコミットがすでにプッシュされていたので、私はあなたのグラフ(git log --oneline --decorate --graph)がこのようなものに見える。

* (master, modelUpdate4, HEAD) Merge branch 'modelUpdate4'
| \
|  * (origin/modelUpdate4) Modified model according to requests. [HEAD^2]
|  |
|  * Another commit on modelUpdate4
|  |
|  * Yet another commit on modelUpdate4!
|  |
*  | (origin/master) Something that conflics with a commit in modelUpdate4 [HEAD~1]
| /
* Previous commit on master [HEAD~2]
.

masterは最初の親の最初の親です.modelUpdate4HEAD~2HEADのマージであるため、modelUpdate4ラインを2つコミットします。 mastermaster 2番目の親です。したがって、HEAD^2ラインをHEAD'sの前にコミットします。 (参照:

HEADが新しいベースの場合は、modelUpdate4HEAD~2の間のすべてのコミットを直線で取得できます。それが起こるHEAD~2コミットでブランチの競合を扱う必要があります。

* (master, HEAD) Merge branch 'modelUpdate4'
|
* Modified model according to requests.  Repopulated seeded database.
|
* Another commit on modelUpdate4
|
* Yet another commit on modelUpdate4!
|
* Something on master that conflics with modelUpdate4
|
* Previous commit on master
.

他の誰かがそれらのリモートブランチを使用しているか、分岐履歴を維持したい場合は、リベースしないでください。それはすでにリモートレポにある履歴を書き直すでしょう、それは他のみんなのための頭痛になるでしょう。マージを押すと、あなたは黄金になるでしょう。

あるいは、masterに直接再帰することができます。 modelUpdate4はGit Booniesで終わるでしょうが、それは私が賭けるタスクブランチであるため、とにかくそれを削除するつもりでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top