1. ホーム
  2. ギット

[解決済み】git ahead/behind information between master and branch?

2022-04-03 09:25:55

質問

ローカルリポジトリにテスト用のブランチを作成しました ( test-branch にプッシュしました。 Github .

もし、私が自分の Github アカウントで、この test-branch をクリックすると、その情報が表示されます。

This branch is 1 commit ahead and 2 commits behind master

私の質問です。

  1. この情報をローカルに表示するにはどうしたらよいでしょうか(たとえば、ターミナルでこの情報を表示するコマンド。 Github を見ることができますか?)
  2. ブランチ間の差分を見ることができるのは知っています。

    git diff master..test-branch
    
    

    または Meld (私はこれが好きです)。

    git difftool master..test-branch
    
    

    を見る方法はないかと思ったのですが。 後ろ は別々にコミットします。I.E.: 次のことを示す方法はありますか? 1コミット先 を単体で、そしてそれらの 2コミット後ろ を単独で?

解決方法は?

パート1

質問1に対する答えとして、2つのブランチを比較して、それぞれのブランチが他より何コミット進んでいるかを表示するトリックを見つけました(質問1に対するより一般的な答えです)。

について ローカル のブランチになります。 git rev-list --left-right --count master...test-branch

について リモート のブランチを作成します。 git rev-list --left-right --count origin/master...origin/test-branch

すると、次のような出力が得られます。

2 1

この出力は、次のことを意味します。 master , test-branch は1コミット先で2コミット後です。

また、ローカルブランチとリモートブランチを比較することもできます。 origin/master...master を使えば、ローカルブランチのコミット数を知ることができます(ここでは master がリモートの対応するものに対して先行/後行していることを示します。

パート2

ご質問の後半部分への回答ですが、具体的に何を実現したいのかによって、解決策が異なります。

コミットを見るには

を持つためには git rev-list は、どちらか一方のコミットの正確なリストを返します。 --count のような引数に変更します。 --pretty=oneline で、完全なコマンドを実行するようにします。

git rev-list --left-right --pretty=oneline master...test-branch

すると、次のような出力が得られます。

<bba27b56ad7072e281d529d4845e4edf877eb7d7 unique commit 2 on master
<dad0b69ec50ea57b076bfecabf2cc7c8a652bb6f unique commit 1 on master
>4bfad52fbcf0e60d78d06661d5c06b59c98ac8fd unique commit 1 on test-branch

ここでは、すべてのコミット sha の前に < または > で、どちらの枝にあるのかを示します(左または右、ここでは master または test-branch をそれぞれ使用します)。

コードを表示する

どちらかのブランチにあるすべての新しいコミットだけの diff を表示したい場合は、二段階の手順で行います。

  1. 直近の共通祖先を定義する
$ git merge-base master test-branch
c22faff7468d6d5caef217ac6b82f3ed95e9d902

  1. どちらかのブランチを上で取得したコミットshaにdiffします(通常は短いフォーマットで大丈夫です)

master にある全コミットの diff を表示する場合のみ

git diff c22faff7..master

test-branch にあるすべてのコミットの diff を表示する場合

git diff c22faff7..test-branch