28

マスターブランチと機能ブランチの違いを確認したいと思います。マスターから機能ブランチに多くのプルがあり、機能をマスターにマージした場合に追加される変更を確認したいと思います。

これは私の状況です:

-*--*--*-----*<master>
  \     \     \
   1--*--*--*--2--*<feature>

私の問題はgit diff master feature、コミット番号2しか表示されないようです。GitHubプルリクエストが表示するdiffをどのように確認できますか。これは、コミット1までずっと続くと思います。

git cherry違いを見たいコミットが表示されていることに気づきました。

4

3 に答える 3

144

知っておくべき重要なことgit diff A Bは、コミットグラフの正確に2つのポイント間のツリーの状態の違いを示すだけであり、履歴は気にしないということです。に使用される表記.....表記にgit diffは、次の意味があります。

'gitdiff'のコミットを指定するさまざまな方法の図

したがって、実行するgit diff master featureと、マークしたコミットによって導入された変更が表示されるだけでなく、出力には、コミットされたツリーの状態2とでコミットされたツリーの状態の正確な違いが表示masterされfeatureます。機能ブランチの以前の変更が表示されない場合は、マスターからの以前のマージからの競合を解決して、master?のバージョンを優先している可能性があります。

cebeweeが言うように、歴史をgit log -p master..featureにするので、あなたが望むのはそれかもしれません。とforの意味は、コミットの範囲を選択するため異なります。git log .....git log

gitlogのコミット範囲を指定するさまざまな方法の図

masterちなみに、トピックブランチへのマージは間違っているとよく言われます。代わりに、リベースするか、トピックブランチmasterが完了した後にマージする必要があります。これにより、トピックブランチの意味を簡単に理解できます。Gitのメンテナは、マージの哲学について(理解するのがやや難しい)ブログ投稿を行いました。

于 2011-03-10T08:21:47.017 に答える
6

git diff master featureコミットは表示されませんが、コミットマスターと機能のテキストの違いが表示されます。まだマスターになっていない機能からのすべてのコミットを見たいように聞こえますか?この場合、diffも表示したい場合は、git log master..featureまたはを試してください。git log -p master..feature

man git-rev-parse'a..b'構文の説明については、の「範囲の指定」セクションを参照してください。

于 2011-03-10T06:41:11.650 に答える
2

私はGitに比較的慣れていませんが、あなたの質問を正しく理解している場合、あなたの質問は、リモートリポジトリとローカルリポジトリ、およびそれらが互いにどのように関連しているかを正しく理解していないことに根ざしています。一度理解すると、すべてが2倍簡単になったのを覚えています。

ブランチが2つしかない以下の状況にあると思います。

  • featureBranch
  • masterBranch

ただし、を実行すると、ローカルとリモートのすべてのブランチgit branch -aを表示できるようになります。

したがって、実際の状況は次のとおりです。

  • featureBranch
  • masterBranch
  • remoteBranch(s)
  *---* <remote's Master> which is behind your local
      \
      -*--*--*-----*<master> which is ahead of your remote/origin
       \     \     \
        1--*--*--*--2--*<feature>

表示されているものと同様の差分を表示できるようにするには、リモートブランチで差分を表示GitHub Pull Requestする必要がありdiffます。

git diff <local branch> <remote>/<remote branch>

ローカルGitブランチをそのリモートブランチと比較する方法を参照してください。

于 2016-08-31T21:33:38.247 に答える