web-dev-qa-db-ja.com

ブランチのベースとなっているリモートの「親」ブランチをどのように確認できますか?

ローカルリポジトリ内に同期する必要のあるいくつかのリモートトラッキングブランチがあるシナリオがあります。ワークフローモデルは次のとおりです。

  • 目的のリモート追跡ブランチに基づいて、ローカルにブランチを作成します
  • 変更を加える
  • ビルド/テスト/修正
  • コミット
  • リモートサーバーにプッシュバックする

「git status」は、何かが変更されない限り、ローカルブランチのベースとなるブランチを表示しないことに気付きました。つまり、コミットされていないローカルの変更または最近のフェッチにより、ローカルブランチが時代遅れになります。ローカルブランチがどのブランチに基づいているかを、物事を変更せずに知る方法はありますか? 「git status -showparentbranch」またはこれを表示する他のコマンドのようなもの。時々、この必要性に出くわしますが、それをどのように満たすかまだわかりません。

33
Andrew Falanga

これを試して:

git log --graph --decorate
41
elrrrrrrr

Gitは、コミットが行われたブランチを追跡しません。伝える方法はありません。リポジトリでコミットが発生した場合、reflogを調べることができますが、それはそれです。 The Pro Git book のDAGの説明をご覧ください-また、reflogを参照してください。

gitk --allまたはgit log --graph --decorateを使用して履歴を視覚化することもできます

お役に立てれば。

17
Adam Dymitruk

git branch -vv意志:

  • listallローカルブランチ
  • 各ローカルブランチの隣にリモートブランチの名前を表示する
  • アクティブなローカルブランチを強調表示する

...これにより、現在のアクティブなブランチのリモートブランチなどを特定できます。

ローカルブランチが多数ある場合、リストは非常に長くなる可能性があります。つかいます git branch -vv | grep SOMEWORD出力をSOMEWORDを含むブランチのみに制限します。ブランチに固有のWordを考えることができれば、最良のフィルターが得られます(1つの結果のみ)。

また、出力にいくつかの追加データ、つまり最後のコミットの番号(SHA1)とメッセージが表示されます。これらにgrepフィルターが適用されます。除外する方法が見つかりませんでした。

Gitから ブランチドキュメント

-v

-vv

-詳細

リストモードの場合、各ヘッドのsha1およびcommit件名行を、上流ブランチ(存在する場合)との関係とともに表示します。 2回指定した場合、アップストリームブランチの名前も出力します(git remote showも参照)。

(あなたのコメントに基づいて、はい、「正しい」質問は「親」ブランチではなく「リモート」ブランチについて質問するようです。しかし、それも私が検索したものです!:))

11
david.libremone

また、これを試してみることができます:

git rev-parse --abbrev-ref --symbolic-full-name @{u}

そして、.gitconfigファイルでこのエイリアスを使用します:

[alias]
    showparentbranch = rev-parse --abbrev-ref --symbolic-full-name @{u}

次に、単に呼び出すことができます:

git showparentbranch

Gitバージョン2.10.2.windows.1でテスト済み

1