1

gitk を使用してコミット オブジェクトを確認すると、(左下のペインの) ブランチの下に一覧表示され、上に移動できるこのブランチのすべての子が表示されます (名前のないコミットではなく、実際にブランチ名がある場合)。

なんで?IMHOこれは論理的ではなく、イベントの年表(物事がリポジトリにコミットされた方法)に違反しているため、役に立ちません。

次のようなツリーがあるとします。

o ブランチ 'Left' (コミット 3)
| o ブランチ '右' (コミット 2)
|/
o コミット 1
|
o ブランチ「ベース」

ここで、コミット 1 を選択すると、「ブランチ:」の下に次のように表示されます:
ブランチ: 左、右
フォロー: ベース

これのポイントは何ですか?commit 1 オブジェクトは base ブランチの一部であり、Left ブランチや Right ブランチの一部ではありません。作成された時点では Left と Right がまだ存在していなかったからです。したがって、Left と Right LATER にマージまたはコミットされるすべてのものは、コミット 1 ではなく、Left または Right の一部になります。

ClearCaseのバックグラウンドから来ているので、私にはまったく意味がないので、誰かがここで何が欠けているのか説明してください...

ありがとう!

4

3 に答える 3

1

この情報のおかげで、選択したコミットで導入された変更がそこにあるすべてのブランチに含まれていることがわかります。

コミットがどのブランチに適用されるか (または、特定のブランチに選択したコミットが含まれているか) を知りたい状況を考えることができます。常に gitk の行をたどることができますが、長いブランチでは面倒な場合があります。

時々、反対のことをしたい、コミットを選択して、別の以前のコミットがそこに適用されるかどうかを確認します。私の知る限り、それを行う実際的な方法はないため、他の以前のコミットを選択して「ブランチ」フィールドをチェックすることは、良い代替手段です。

于 2010-12-14T13:06:39.273 に答える
0

あなたはこれを少し間違って見ています。commit1 commitは、ベースブランチの一部ではありません。gitでは、ブランチはコミットオブジェクトへの単純な参照です。ブランチの履歴は、「から到達可能なすべてのコミット」として記述されます。したがって、commit1は左と右の両方から到達可能ですが、ベースからは到達できません。

その場合git checkout base && git checkout -b feature2、新しいfeature2ブランチにはcommit1が含まれません。Gitはブランチの作成を追跡しません-タグを追加したりgit mergebase Left Right、両方のブランチから到達可能な最初のコミット(この場合はcommit1)を通知する使用を記録したい場合。

于 2011-12-14T08:19:36.320 に答える
0

Git にはよ​​り匿名のブランチ モデル (匿名ブランチと混同しないように、git にはありません) があり、コミットはブランチに永続的に関連付けられていません (ブランチ名がマージ メッセージに含まれることがありますが、それはより慣例です)。 )。git のブランチは、新しいコミットとともに前方に移動されるブランチ ラベルですが、コミットには、それが作成されたブランチに関する情報はありません。

あなたの例commit1では、どのブランチにも直接関連付けられていませんが、前のブランチはそのままでbase、2 つの昇順のコミットは onLeftRight.

于 2010-12-15T09:11:45.623 に答える