マスターとブランチ間のgit ahead/behind情報? 質問する

マスターとブランチ間のgit ahead/behind情報? 質問する

ローカルリポジトリ ( 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
    

    しかし、先行コミットと後続コミットを別々に表示する方法があるかどうか疑問に思っています。つまり、先行コミット 1 つを単独で表示し、後続コミット 2 つを単独で表示する方法はありますか?

ベストアンサー1

パート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

この出力は、「 と比較してmastertest-branchは 1 コミット進んでおり、 2 コミット遅れています。」という意味です。

ローカル ブランチとリモート ブランチを比較することもできます。たとえば、origin/master...masterローカル ブランチ (ここでは ) がリモート ブランチよりコミット数でどれだけ進んでいるか、または遅れているかを調べることができますmaster

パート2

質問の 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

ここでは、各コミットの前に<またはが付いており>、どのブランチにあるかを示します (ここではそれぞれ左または右、masterまたはtest-branch)。

コードを表示するには

どちらかのブランチでのみ見つかったすべての新しいコミットの diff を表示する場合は、次の 2 つの手順を実行する必要があります。

  1. 最も最近の共通祖先を定義する
$ git merge-base master test-branch
c22faff7468d6d5caef217ac6b82f3ed95e9d902
  1. 上記で取得したコミット sha のいずれかのブランチを比較します (通常は短い形式で十分です)

マスターでのみ見つかったすべてのコミットの差分を表示する

git diff c22faff7..master

見つかったすべてのコミットの差分を表示するには、test-branch のみを使用します。

git diff c22faff7..test-branch

おすすめ記事