Gitで着信コミットを確認するにはどうすればよいですか?またはさらに良い、私はただ_git fetch
/git pull
ed?
編集:質問を明確にするために:誰かが私に、いくつかの修正を得るために、リポジトリからプルする必要があると言います。私の目標は、それらの変更が何であるかを確認することですbefore私はそれらを受け入れます。 git pull
は自動的にマージされますが、これは私が望むものではありません。 git fetch
はマージせずにそれらを取得しますが、実際に何を引き込んだのかを表示する方法がわかりません。元のフレージングの理由は、通常はコマンドがhg incoming <repo name here>
— gitにアナログがないと思われるコマンド。
incoming
は、gitでの直接的なマッピングではありません。複数のレポジトリを取得でき、各レポには複数のブランチがあるためです(そして、私はよくそうします)。
Hgの着信コマンドに相当するものがある場合、おそらく次のようになります。
git fetch && git log ..Origin/master
つまり、「アップストリームからすべてのものを取得してから、現在のブランチをアップストリームマスターブランチと比較します。」
同様に、発信は次のようになります。
git fetch && git log Origin/master..
実際には、多くのローカルブランチを追跡し、多くのリモートブランチで追跡するのは簡単であり、それらをまとめるのに問題はないため、手動で入力します(そのうちの1つのエイリアスを作成しましたが)。
git whatchanged
これは、ある範囲のコミットで行われた変更の概要を提供します。
プルしようとしているものを確認したい場合は、git fetch
最初に、リモートリポジトリのローカルトラッキングブランチのみを更新し(yourブランチのいずれも更新しない)、次に、プルしようとしている新しいコミット。例えば:
git whatchanged ..Origin
これは、「現在の場所の共通の祖先」と「Origin」の間のコミットメントを示すための略記です。
2つのリポジトリの違いを調べることができます。ローカルブランチ 'master'とリモートトラッキングブランチ 'Origin/master'があり、他の人がコードをコミットしていると仮定すると、2つのブランチの違いについて異なる統計を取得できます。
git diff --summary master Origin/master
git diff --stat master Origin/master
git diff --numstat master Origin/master
git diff --dirstat master Origin/master
git diff --shortstat master Origin/master
git diff --name-only master Origin/master
git diff master Origin/master
誰かにプルするように言われると、リポジトリURLとブランチ(デフォルトはmaster
)が渡されます。
ただやる
git fetch URL branch
1つ(優先順位の降順):
# note 3 dots in next 3 commands
gitk HEAD...FETCH_HEAD
# shows all commits on both sides since the "fork" point
gitk --cherry-pick HEAD...FETCH_HEAD
# as above but skips identical patches so you really see the differences
git log --graph --boundary --left-right --cherry-pick --decorate HEAD...FETCH_HEAD
# I have a Nice alias for this; it's the text mode eqvt of the above
私は時々「tig
」も使用しますが、この特定のユースケース(both Sidesを参照)はtig
によってうまく処理されません。
ただし、それを2つのドット(実際の質問とより厳密に一致する場合がありますが、私は3つのドットバージョンを好む場合があります)に下げると、次のことができます。
tig HEAD..FETCH_HEAD
便宜上、エイリアスは次のとおりです。
incoming = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate HEAD..FETCH_HEAD'
outgoing = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate FETCH_HEAD..HEAD'
「着信コミット」ユーザーがローカルにコミットしてプッシュするようなものはありません。 gitxまたはgitk(gitに付属)を開いて、リポジトリがどのように見えるかを確認します。
つかいます: gitk --all
見る。
この投稿をご覧ください。 gitバージョン1.7で導入された新機能の使用方法を示しています Gitを使用して、ローカルとリモート間の変更を見つける方法