Gitに "git pull --dry-run"オプションがありますか?

git pull --dry-run のように、作業ツリーが壊れる前にマテリアルがどのようにマージされるかを確認することはありますか?

今私はやっている:

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

私はそれに関連する 'git-pull'のマニュアルページで何も見ませんでした。

明確にするために、私は、 git pull を実行する際に競合があるかどうかを確認し、ビルドから抜け出し、デプロイメントに失敗し、そのディレクトリツリーをそのままにしておくために、 git pull の前に

55
なぜ紛争が起こるのでしょうか?デプロイスクリプトがローカルコミットを行っていますか?その場合はなぜですか?
追加された 著者 CB Bailey,

7 答え

私はマージが失敗した場合、私を元に戻すために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}
43
追加された
fatal:あいまいな引数 'HEAD..origin/branch':作業ツリーにないリビジョンまたはパスが不明です。
追加された 著者 Green,
追加された 著者 scireon,

あなたのローカルオリジン/マスターを更新するためにまずフェッチする必要があります

git fetch origin

次に、あなたが行うことができます:

git diff --name-only origin/master

変更されたファイルを一覧表示します。

git diff origin/master directory_foo/file_bar.m

directory_foo/file_bar.mファイルの行ごとの差分を一覧表示します。

24
追加された
--name-onlyフラグを持つヒント
追加された 著者 cw24,

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

15
追加された
git stash を意味しますか?
追加された 著者 WesternGun,
いいえ、git stashは全く異なっています。それはあなたのローカルな変更をどこかに置きます。
追加された 著者 RichieHH,
# 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
3
追加された
なぜdownvote?私は git diff this-answer/top-answer を実行しましたが、重大なエラーは見つかりませんでした。 downvoteをコミットするときにコメントを残すことを検討してください: git commit -m "どうしてdownvote、blah blah blah"
追加された 著者 WesternGun,

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

2
追加された
リモートブランチに対してこれを行っていたら( git fetch origin branch を先に行って)、 git merge --abort origin/branch でしょうか?
追加された 著者 Nick Devereaux,

この似たような質問で私の答えを見てください:

取得せずにgit-pullをプレビューするには?

これは〜/ .gitconfig ファイルに移動します:

[alias]
        diffpull=!git fetch && git diff origin/`git rev-parse --abbrev-ref HEAD`..HEAD
0
追加された

この似たような質問で私の答えを見てください:

取得せずにgit-pullをプレビューするには?

これは〜/ .gitconfig ファイルに移動します:

[alias]
        diffpull=!git fetch && git diff origin/`git rev-parse --abbrev-ref HEAD`..HEAD
0
追加された