2

git のmergecommandのドキュメントでは、 の結果git merge topicは次のように示されています。

      A---B---C topic
     /         \
D---E---F---G---H master

このシナリオではtopic、ブランチ リストを整理するために削除すると、コミット A、B、および C のすべてのレコードが失われ、単一のコミット H だけが残ります (おそらくすべてのコミット メッセージが削除されます)。 A、B、および C から):

D---E---F---G---H master

これは実際に当てはまるのでしょうか?もしそうなら、どうすればそれを防ぐことができますか? 例えば:

D---E---F---G---A---B---C master
4

1 に答える 1

9

いいえ、すべてが残っています。

トピック ブランチを削除する前に:

      A---B---C トピック
     / \
D---E---F---G---Hマスター

トピック ブランチを削除した後:

      A---B---C
     / \
D---E---F---G---Hマスター

ブランチは、C をコミットするための単なるポインターです。それを削除しても、コミットは取り除かれません。

トピック ブランチをまだマージしていない場合は、 を使用しない限り削除に失敗することに注意してくださいgit branch -D。このgit branch -dコマンドは、マージされたブランチのみを削除します。これにより、すべての履歴が保持されますが、ブランチ名は削除されます。

脚注:git rebase masterトピック ブランチから使用し、マスターをトピックに早送りし、トピックを削除すると、次の履歴を取得できます。

D---E---F---G---A'---B'---C' マスター

これは可能ですが、おそらく望ましくないことに注意してください。元のコミット A、B、および C は、リベースによって失われます。

于 2012-10-24T21:30:12.883 に答える