オリジンのマスターブランチのバージョンのファイルに戻す方法


425

私は、リモートサーバーからのレポの複製されたマスターブランチのローカルコンピューターのマスターブランチにいます。

ファイルを更新しましたが、リモートマスターブランチから元のバージョンに戻したいのですが。

これどうやってするの?

回答:


874

ファイルをコミットしていない、またはインデックスに追加していないとすると、次のようになります。

git checkout -- filename

インデックスに追加したが、コミットしなかったとすると、次のようになります。

git reset HEAD filename
git checkout -- filename

あなたがそれをコミットしたと仮定すると、それから:

git checkout origin/master filename

ブランチからすべてのコミットを吹き飛ばしたいと仮定すると(非常に破壊的):

git reset --hard origin/master

43
3番目のオプションは、最初の2つのオプションとは大きく異なり、1つのファイルだけでなくすべてのファイルに影響を与えます。これをより明確に指摘する必要があるかもしれません。また、なぜ推奨git checkout HEAD filenameしないgit checkout origin/master filenameでください。オプション1と2の場合、より一貫性がありますか?
CBベイリー

5
@CharlesBailey:git checkout origin/master filenamegahooaの回答にオプションを追加しました。
フランク・

2
@cilphexは現在のブランチのすべてのコミットを吹き飛ばします
WattsInABox 2013

1
私は誤ってブランチAをブランチBからリベースし、マスターローカルブランチにリセットする必要がありました。git reset --hard master元に手を伸ばしたくなかったので、それだけが私の解決策でした。ありがとう。
taco

3
@gahooaおそらくgit checkout-filenameである必要があります。ファイルが「マスター」と呼ばれる場合、意図しない動作が発生します。
user2602152 2015年

50

私は同じ問題に直面し、このスレッドに出くわしましたが、私の問題はでしたupstream。以下のgitコマンドは私のために働きました。

構文

git checkout {remote-name} / {branch}-{file / path.js}

git checkoutアップストリーム/開発-public / js / index.js


0

まだmasterブランチにコミットしていない場合、簡単です:

  • (のようにgit checkout -b oops/fluke/dang)masterブランチを降りる
  • 変更をそこにコミットします(などgit add -u; git commit;
  • (のようにgit checkout master)マスターブランチに戻ります

変更はブランチoops / fluke / dangに保存されます。マスターはそのままです。

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