gitローカルバージョンをリモートバージョンに置き換える


148

マージして競合を引き起こさずにローカルファイルを無視してリモートブランチから取得するようにgitに指示するにはどうすればよいですか?


1
SO「答えを参照してください。別のように一方の分岐を作るためのgitコマンドのための」すべてのために現在可能な方法をシミュレートgit merge -s their
VonC 2011年

さらに詳しい情報を提供していただけると助かります。リモートブランチのすべてのファイルのコンテンツを採用しますか、それとも一部のファイルのみを採用しますか(つまり、一部のローカルバージョン/変更を保持します)?残したい地元の歴史はありますか?(すでにローカル履歴を組み込んだ他のブランチまたはリポジトリがある場合、これは重要になる可能性があります。)ローカル履歴を保持したい場合、後でそれをどのように使用する予定ですか?(ローカルの履歴を指すタグを残して、リモートが持っているものにブランチをリセットするか、「それらをマージする」ことができます)。
Chris Johnsen、2011年

回答:


169

これが最も安全なソリューションです。

git stash

今、あなたは紛争を恐れずにあなたがやりたいことを何でもすることができます。

例えば:

git checkout origin/master

リモートの変更をマスターブランチに含める場合は、次のようにします。

git reset --hard origin/master

これにより、「マスター」のブランチが「オリジン/マスター」を指すようになります。


90
これはHEADを切り離すことを指摘する価値があるかもしれません-質問者はブランチに留まることを好むかもしれませんgit stash; git fetch origin; git reset --hard origin/master
Mark Longair

10
私はマーク・Longairさんのコメントがこの質問への実際の答えだと思う

それは私にとって最も有用な答えでした+1
Andres

前の状態に戻す方法はgit stashgit stash list空です。
Leo

私はあなたを抱きしめたい
ウグルカズダル

45

私はこの問題を理解しています。上流から1つのファイル(または選択範囲)の内容を完全に置き換えたいと思っています。インデックスに直接影響を与えたくない場合(通常どおり、追加+コミットを実行します)。

単に行う

git checkout remote/branch -- a/file b/another/file

広範なサブツリーに対してこれを行い、代わりに直接インデックスに影響を与えたい場合は、

git read-tree remote/branch:subdir/

その後、(オプションで)作業コピーを更新できます

git checkout-index -u --force

2
これはまさに私が欲しかったものです。ありがとう。
AutonomousApps

11

私の理解では、たとえば、更新したファイルをテスト目的でのみ誤って保存したということです。次に、「git status」を実行すると、ファイルは「Modified」として表示され、いくつかの悪い言葉を言います。古いバージョンを元に戻し、通常どおりに動作させたいだけです。

そのシナリオでは、次のコマンドを実行するだけです。

git checkout -- path/filename

10

次のように、「マスター」(リモート/元のリポジトリ)からリモートファイルをチェックアウトします。

git checkout master <FileWithPath>

例:git checkout master components / indexTest.html


私にとっては「git checkout remotes / origin / master <my-file>」のように機能しました
saravanakumar

4

-sまたは--strategyオプションと組み合わせて使用し-Xます。特定の質問では、すべてのリモートファイルを保持し、同じ名前のローカルファイルを置き換える必要があります。

リモートバージョンとの競合を置き換える

git merge -s recursive -Xtheirs upstream/master  

競合するすべてのファイルのリモートリポジトリバージョンを使用します。

ローカルバージョンとの競合を置き換える

git merge -s recursive -Xours upstream/master

競合するすべてのファイルのローカルリポジトリバージョンを使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.