web-dev-qa-db-ja.com

どこから分岐しましたか?

私は古いプロジェクトに戻って、ニースを実行しましたgit status何が起こっているのかを理解するために、ブランチが多すぎることに気づきました!これに取り掛かる前にハウスキーピングをしたいのですが、どのブランチがどのブランチからのものかわかりません。

例えば。 「branchA」は「develop」から派生していますか? 「branchB」は「master」または「branchA」から派生していますか?

上記のサンプルの質問にどのように回答できますか?

46

ブランチはDAG内の特定のコミットへのポインタにすぎないため、これに対する正規の答えはありません。たとえば、masterfooは同じコミットを指している可能性があります。次にfooからブランチを作成する場合、これはmasterからブランチを作成することと実質的に同じです。

つまり、コミットグラフを視覚化すると(gitkまたはその他のグラフィカルな履歴ツールを使用して)、ブランチポイントがコミットグラフ内のどこにあるのか、さまざまなブランチポインターがどこを指しているのかを大まかに把握できます。

20
Amber

git merge-base は、2つのブランチの共通の祖先であるコミットを示します。

簡単な使用法:git merge-base <branch> <branch>は、2つのブランチの共通コミットを示しています。

29
patthoyts

すでにブランチにいる場合は、次のように、別のブランチから分岐したポイントであるコミットを取得できます。たとえば、masterです。

git merge-base --fork-point master
3
Cory Klein

WindowsまたはLinux(GUI付き)で作業している場合は、美しいgit-extensionsをインストールするだけです。彼らはあなたにブランチ/マージツリーを完璧に視覚化できます。

http://code.google.com/p/gitextensions/downloads/detail?name=GitExtensions207.Zip&can=4&q=

ご挨拶、

2
Mario Fraiß

命名規則を守り、混乱を避けてください。

masterからブランチを作成するとき-たとえば、電子メール機能を実装するために-master_emailfeature。次に、このブランチからサブブランチを作成して電子メールにsslを実装する必要がある場合は、それに名前を付けることができますmaster_emailfeature_sslandtls

これにより、ブランチの名前を見ただけで、どのブランチがどのブランチから作成されたかが明確になります。

1
Basil Musa

グラフィカルツリービューアを使用できます。私はgitgを使用してブランチとdiffを表示していますが、実際の作業ではほとんどの場合コマンドラインを使用しています。

1
Not_a_Golfer

コマンドラインのgit実行可能ファイルには、分岐とマージの基本的なツリーを表示する機能もあります。gitlogに--graphオプションを使用してください。他のオプションを使用して、ニースのあらゆる種類の拡張を行うことができます。サイズを試してみてください:

最も単純:git log --graph

ニース:git log --graph --decorate --simplify-by-decoration --color --oneline --date = local

完全なモンティ:git log --graph --decorate --simplify-by-decoration --color --oneline --date = local --pretty = format: '%C(auto)%h%d%C(reset )%s(%C(シアン)%ad%ae%C(リセット)) '

0
Walt Howard

ローカルブランチがどのリモートブランチから派生したのかを知りたい場合は、このコマンドを使用すると簡単に理解できます。

git remote show Origin

「git pull用に構成されたローカルブランチ:」が表示されるまで下にスクロールします。その下に、すべてのローカルブランチのリストが表示され、リモートブランチがそれぞれマージされます。

0
Jake Levsen