2013-06-20 84 views
49

git pull --dry-runのようなものが、私の働く木を壊す前にどのようにマージされるのか見ていますか?Gitに "git pull --dry-run"オプションがありますか?

今私がやっている:

git fetch origin && git merge --no-commit --no-ff 

私はそれに関連する「gitのプル」のmanページには何も表示されませんでした。

明確にするために、git pullを実行したときに競合が発生していないかどうかを確認し、インストールを終了してデプロイメントを失敗し、そのディレクトリツリーをgit pullと同じにしておくために、

+1

なぜ競合が発生するのですか?展開スクリプトはローカルコミットを行いますか?その場合はなぜですか? –

答えて

39

私はマージが失敗したときに私を元に戻すために、Gitの本来の能力に常に頼ってきました。

:計画通りに物事が行かなかった場合は

$ git fetch origin branch # Fetch changes, but don't merge 
$ git diff HEAD..origin/branch # Diff your current head to the fetched commit 

... personal judgement of potential merge conflicts ... 

$ git merge origin/branch # merge with the fetched commit 

、ご希望の状態に戻ってあなたのreflogを見て、リセットします。

はあなたが行ったようにあなたが開始することができ、マージが発生する可能性がありますどのように見積もるために

$ git reflog 
... 
abc987 [email protected]{0}: merge activity 
b58aae8 [email protected]{1}: fetch origin/branch 
8f3a362 [email protected]{2}: activity before the fetch 
... 
$ git reset --hard HEAD{2} 
+0

また、引っ張ってくることは何とかマージに似ているので、これを試すこともできます[http://stackoverflow.com/questions/501407/is-there-a-git-merge-dry-run-option](http://stackoverflow.com/question/501407/is-there-a-git-merge-dry-run-option) – scireon

+0

'致命的:あいまいな引数 'HEAD..origin/branch':未知のリビジョンまたはパスが作業ツリーにありません。 ' – Green

15

現在のものから新しいスローアウェイブランチを作成し、そこにgit pullを実行することで、効果を得ることができます。結果に満足できない場合は、元のブランチはそのままです。

+0

あなたは 'git stash'を意味しますか? – FaithReaper

21

あなたは、あなたの地元の原点を更新するために、最初にフェッチする必要があります/マスター

git fetch origin 

次にできること:

git diff --name-only origin/master 

変更されたファイルをリストします。

git diff origin/master directory_foo/file_bar.m 

ファイルdirectory_foo/file_bar.mの行ごとの差分をリストします。

+0

ありがとう--name-onlyフラグ付きのヒント – cw24

2

プルするとマージすることを意味するので、スクリプトで競合が検出され、マージに失敗した場合はgit merge --abortを実行します。

+0

リモートブランチに対してこれを行っていたら( 'git fetch origin branch'を先に進めると)、' git merge --abort origin/branch'が正しいでしょうか? –

3
# fetch new commits from origin 
$ git fetch 

# check what are the differences and judge if safe to apply 
$ git diff origin/master 

# actually merge the fetched commits 
$ git pull 
+0

なぜdownvote?私は 'git diff this-answer/top-answer'を実行しましたが、重大なエラーは見つかりませんでした。 downvoteをコミットするときにコメントを残すことを検討してください: 'git commit -m"なぜあなたはdownvote、blah blah blah "'をしますか? – FaithReaper

関連する問題