私は古いプロジェクトに戻って、ニースを実行しましたgit status
何が起こっているのかを理解するために、ブランチが多すぎることに気づきました!これに取り掛かる前にハウスキーピングをしたいのですが、どのブランチがどのブランチからのものかわかりません。
例えば。 「branchA」は「develop」から派生していますか? 「branchB」は「master」または「branchA」から派生していますか?
上記のサンプルの質問にどのように回答できますか?
ブランチはDAG内の特定のコミットへのポインタにすぎないため、これに対する正規の答えはありません。たとえば、master
とfoo
は同じコミットを指している可能性があります。次にfoo
からブランチを作成する場合、これはmaster
からブランチを作成することと実質的に同じです。
つまり、コミットグラフを視覚化すると(gitk
またはその他のグラフィカルな履歴ツールを使用して)、ブランチポイントがコミットグラフ内のどこにあるのか、さまざまなブランチポインターがどこを指しているのかを大まかに把握できます。
git merge-base は、2つのブランチの共通の祖先であるコミットを示します。
簡単な使用法:git merge-base <branch> <branch>
は、2つのブランチの共通コミットを示しています。
すでにブランチにいる場合は、次のように、別のブランチから分岐したポイントであるコミットを取得できます。たとえば、master
です。
git merge-base --fork-point master
WindowsまたはLinux(GUI付き)で作業している場合は、美しいgit-extensionsをインストールするだけです。彼らはあなたにブランチ/マージツリーを完璧に視覚化できます。
http://code.google.com/p/gitextensions/downloads/detail?name=GitExtensions207.Zip&can=4&q=
ご挨拶、
命名規則を守り、混乱を避けてください。
master
からブランチを作成するとき-たとえば、電子メール機能を実装するために-master_emailfeature
。次に、このブランチからサブブランチを作成して電子メールにsslを実装する必要がある場合は、それに名前を付けることができますmaster_emailfeature_sslandtls
。
これにより、ブランチの名前を見ただけで、どのブランチがどのブランチから作成されたかが明確になります。
グラフィカルツリービューアを使用できます。私はgitg
を使用してブランチとdiffを表示していますが、実際の作業ではほとんどの場合コマンドラインを使用しています。
コマンドラインの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(リセット)) '
ローカルブランチがどのリモートブランチから派生したのかを知りたい場合は、このコマンドを使用すると簡単に理解できます。
git remote show Origin
「git pull用に構成されたローカルブランチ:」が表示されるまで下にスクロールします。その下に、すべてのローカルブランチのリストが表示され、リモートブランチがそれぞれマージされます。