2012-08-01 16 views
8

同僚がmasterからローカルブランチ(branchA)を作成し、作業を行い、プッシュし、マスターでマージし、もう一度作業をしてから再度プッシュしました。それと並行して、他の同僚は他の支店で働いていて、それらを合併して習得しています。git:コミットを1つのブランチに表示する方法

今、branchAを引っ張ってレビューする必要があります。だから、私はgit pullgit checkout -b branchA origin/branchAを実行しました。これは問題ありません。しかし、すべてのコマンド(git diff/log/show)は、リポジトリ内のすべてのブランチにわたってコミットを表示します。

branchAに対して行われたすべてのコミットと、作成されたmasterのバージョンとの差分を表示するにはどうすればよいですか。

また、git diff branchAをmasterの現在のHEADに対してどうやっても、branchA内でビューファイルだけが変更できますか?

答えて

10

以下はbranchAし、ローカルの現在のバージョンとの違いを見つけるために、どのように、あなたの2番目の質問に適用されますmasterです。 git logで 'double dot'構文を使用してbranchAにあるすべてのコミットがmasterにないことを確認したいとします。

git log manページ毎の
git log master..branchA 

:ウィットに

SYNOPSIS 
    git log [<options>] [<since>..<until>] [[--] <path>...] 
    ... 
    <since>..<until> 
    Show only commits between the named two commits. When either <since> or <until> is omitted, it defaults to HEAD, i.e. the tip of the current branch. 
    For a more complete list of ways to spell <since> and <until>, see gitrevisions(7). 

あなたがmasterbranchAのいずれかにコミットを見てみたいと思いますが、両方で、あなたは「トリプルドット」を使用することができない場合構文:

git log master...branchA 

最後に、あなたがgit diff、すなわち、git diff master..branchAgit diff master...branchAとまったく同じ構文を使用することができ、respectivel y。

branchAがチェックアウトされている場合は、<until>と指定する必要はありません。それが指定されないままだ場合GitはHEADを前提としますので、コマンドのこれら二つのセットは等価です。

git checkout branchA 
git log master.. 

git log master..branchA 
0

あなたは gitのログ--branches = mybranch

を使用することができますこれは、特定のブランチ上のログを表示します

+0

これは機能しません。私はマスターに合併したのかもしれないが、私は他の人が行った変更を見ている。 – user1491250

0

Gitはそれらがでコミットされた「どのブランチ」についての情報を保持しないコミットします。彼らはあなたが戻ってくることができる木のポイントを与えるだけです。マージが行われると、マージコミットから、あなたが始めたブランチからどの親が来たかを決める方法がありません。これについては、詳細はover hereで説明します。

これは私の理解です。私が間違っていれば訂正したいと思う。

2
  1. git diff master..brnachA:masterとbranchAの間のすべての変更されたファイルを比較します。
  2. git diff master...brnachA:branchAと作成元のmasterのバージョンを比較します。

FYI:git diffは、コマンドラインで出力を生成します。いくつかのビジュアルツールで出力を表示する場合は、git difftoolを使用してください。

git diff引数とオプションをすべてgit difftoolに渡すこともできます。

+0

-2-正しくはありません。 'master'か' branchA'のどちらかでコミットを返しますが、両方では返しません。 'master'が50進んだが、' branchA'が完全にマージされた場合、masterの50コミットを返します。それは最初の質問であるmasterのマージベースと 'branchA'を比較しませんか? – Christopher

関連する問題