2016-05-25 15 views
0

私のチームプログラムは、LabVIEWでソースコードをすべてバイナリファイルに保存します。これは、マージベースまたはブランチからファイルを選択している時間の99%を「マージする」ことを意味します。Git:進行中のマージの分岐を一覧表示します。

私はビジュアルツールにこのような助けをしたいと思っています(この状況では、ソースツリーはちょっとしたものです)。これは、基本的には次のコマンドの束を実行するだけのUIになります。

git checkout --ours ... 
git checkout --theirs .... 

私の質問:「我々」と「彼ら」に対応して素敵なユーザーフレンドリーなブランチ名を取得する方法はありますか?

答えて

0

oursブランチは、マージを開始したときのブランチです。つまり、HEADの名前になります。 (これは、マージを開始するときに、特別な匿名の「デタッチHEAD」の分岐上に存在しないこと、すなわち、HEAD名前ブランチを前提としています。)

を現在のブランチのシンボル名を取得するには:

git symbolic-ref HEAD 

これは、標準出力に完全名(refs/heads/master)を出力し、成功(ゼロ)状態で終了するか、またはfatal: ...メッセージをstderrに出力し、失敗(非ゼロ)状態で終了します。エラーメッセージを抑制するには、-qを追加します。 --shortを追加して、成功すると出力からrefs/heads/の部分を抑制します。

他のブランチの名前がある場合は、それは少し難しくなります。 Gitは引数を早い段階で生のSHA-1ハッシュIDに変換します。しかし、それ店舗名、.git/MERGE_MSGでいくつか、あった場合:(読み、そのファイルを解析することにより

$ cat .git/MERGE_MSG 
Merge branch 'BranchB' into BranchA 
$ 

に注意してください:あなたが得るために、/MERGE_MSGを追加し、git rev-parse --git-dir.gitディレクトリを見つけることができますファイルへのパス)があれば、ブランチ名を見つけることができます。このファイルの形式(そしてその存在)はどこにも公式には書かれていないので、変更する準備ができていることに注意してください。比較的早い時期から変わらずにずっとそこにいました。

関連する問題