マージして競合を引き起こさずにローカルファイルを無視してリモートブランチから取得するようにgitに指示するにはどうすればよいですか?
マージして競合を引き起こさずにローカルファイルを無視してリモートブランチから取得するようにgitに指示するにはどうすればよいですか?
回答:
これが最も安全なソリューションです。
git stash
今、あなたは紛争を恐れずにあなたがやりたいことを何でもすることができます。
例えば:
git checkout origin/master
リモートの変更をマスターブランチに含める場合は、次のようにします。
git reset --hard origin/master
これにより、「マスター」のブランチが「オリジン/マスター」を指すようになります。
git stash; git fetch origin; git reset --hard origin/master
git stash
?git stash list
空です。
私はこの問題を理解しています。上流から1つのファイル(または選択範囲)の内容を完全に置き換えたいと思っています。インデックスに直接影響を与えたくない場合(通常どおり、追加+コミットを実行します)。
単に行う
git checkout remote/branch -- a/file b/another/file
広範なサブツリーに対してこれを行い、代わりに直接インデックスに影響を与えたい場合は、
git read-tree remote/branch:subdir/
その後、(オプションで)作業コピーを更新できます
git checkout-index -u --force
私の理解では、たとえば、更新したファイルをテスト目的でのみ誤って保存したということです。次に、「git status」を実行すると、ファイルは「Modified」として表示され、いくつかの悪い言葉を言います。古いバージョンを元に戻し、通常どおりに動作させたいだけです。
そのシナリオでは、次のコマンドを実行するだけです。
git checkout -- path/filename
次のように、「マスター」(リモート/元のリポジトリ)からリモートファイルをチェックアウトします。
git checkout master <FileWithPath>
例:git checkout master components / indexTest.html
-s
または--strategy
オプションと組み合わせて使用し-X
ます。特定の質問では、すべてのリモートファイルを保持し、同じ名前のローカルファイルを置き換える必要があります。
リモートバージョンとの競合を置き換える
git merge -s recursive -Xtheirs upstream/master
競合するすべてのファイルのリモートリポジトリバージョンを使用します。
ローカルバージョンとの競合を置き換える
git merge -s recursive -Xours upstream/master
競合するすべてのファイルのローカルリポジトリバージョンを使用します。
git merge -s their
。