231

それは可能ですか?

基本的に、次のものを使用してプルするリモートリポジトリがあります。

git pull

さて、このプルが何を変更するか (差分) をプレビューしたいと思います。その理由は、私がプルしているものは「良い」ものではない可能性があり、リポジトリを「ダーティ」にする前に他の誰かに修正してもらいたいからです。

4

10 に答える 10

267

を実行した後git fetch、 を実行してgit log HEAD..origin/master、最後の共通コミットとオリジンのマスター ブランチの間のログ エントリを表示します。差分を表示するには、git log -p HEAD..origin/master各パッチを表示するか、 git diff HEAD...origin/master(2 つではなく 3 つのドット) を使用して単一の差分を表示します。

通常、フェッチを元に戻す必要はありません。フェッチを実行すると、リモートブランチのみが更新されブランチは更新されないためです。すべてのリモート コミットでプル アンド マージを実行する準備ができていない場合は、 を使用して、必要git cherry-pickな特定のリモート コミットのみを受け入れることができます。後で、すべてを取得する準備ができたらgit pull、残りのコミットにマージします。

更新: git fetch の使用を避けたい理由がよくわかりません。git fetch が行うことは、リモート ブランチのローカル コピーを更新することだけです。このローカル コピーは、ブランチとは何の関係もありません。また、コミットされていないローカルの変更とは何の関係もありません。とても安全なので、cron ジョブで git fetch を実行する人の話を聞いたことがあります。(ただし、通常はそれを行うことはお勧めしません。)

于 2008-10-07T20:53:18.810 に答える
51

gitfetchがあなたの探しているものだと思います。

ローカルリポジトリのインデックスにコミットせずに、変更とオブジェクトをプルします。

それらは後でgitmergeでマージできます。

マニュアルページ

編集:さらなる説明

Git-SVNクラッシュコースの リンクから直接

では、リモートリポジトリから新しい変更をどのように取得しますか?あなたはそれらをフェッチします:

git fetch http://host.xz/path/to/repo.git/ 

この時点で、それらはリポジトリにあり、次を使用して調べることができます。

git log origin 

変更を比較することもできます。git log HEAD..originを使用して、ブランチにない変更だけを確認することもできます。次に、それらをマージしたい場合は、次のようにします。

git merge origin

フェッチするブランチを指定しない場合は、デフォルトでトラッキングリモートに設定されるので便利です。

マニュアルページを読むと、オプションとその使用方法を最もよく理解できます。

私は例と記憶によってこれをやろうとしているだけです、私は現在テストするためのボックスを持っていません。あなたは見るべきです:

git log -p //log with diff

フェッチはgitreset--hardlink)で元に戻すことができますが、ツリー内のコミットされていないすべての変更と、フェッチした変更は失われます。

于 2008-10-07T20:45:40.573 に答える
23

リモート リポジトリからフェッチし、違いを確認してから、プルまたはマージできます。

これは、リモート リポジトリと呼ばれるリモート ブランチと、リモート ブランチの追跡originと呼ばれるブランチの例です。masterorigin/master

git checkout master                                                  
git fetch                                        
git diff origin/master
git pull --rebase origin master
于 2011-03-21T11:02:03.000 に答える
11

それを行うためのカスタム git エイリアスを作成しました。

alias.changes=!git log --name-status HEAD..

それでこれを行うことができます:

$git fetch
$git changes origin

これにより、変更を行う前に変更を簡単にプレビューできますmerge

于 2011-08-18T07:32:58.230 に答える