でリポジトリをダウンロードしました
git clone <address>
私はいくつかの変更を行い、いくつかのファイルを編集しました。今はすべてを破棄し、ディスク上にあるものがコードベースの元のリモート バージョンに他ならないことを確認したいと思います: 正しいコマンドは何ですか?
でリポジトリをダウンロードしました
git clone <address>
私はいくつかの変更を行い、いくつかのファイルを編集しました。今はすべてを破棄し、ディスク上にあるものがコードベースの元のリモート バージョンに他ならないことを確認したいと思います: 正しいコマンドは何ですか?
何が起こっているのかを理解できるように、ここに長い説明があります。
リモートが呼び出されたと仮定しますorigin
git reset --hard HEAD
git checkout origin/master
git branch -D master
git checkout -b master
これが行うことは次のとおりです。
(git status で変更されたファイルがないと表示された場合はオプション)ディスク上の変更されたファイルをすべて破棄します (これが理由ですreset --hard
)
リモート マスター ブランチをチェックアウトします (注: 「切り離されたヘッド」状態になります)
master
ローカルブランチを削除します (ローカルの変更をすべて破棄します)。
master
現在のヘッドを新しいブランチとして呼び出す
ここで、おそらく少し違うことをしたいと思うでしょう...つまり、変更を破棄せずに、別の名前付きブランチに配置するだけです...結局、いつそれらが再び必要になるかはわかりません
git checkout -b my-silly-changes
git branch -D master
git checkout -b master origin/master
これにより、現在の変更が呼び出された新しいローカル ブランチに保存され、呼び出されmy-silly-changes
た古いローカル ブランチが削除されmaster
、最後にリモート ヘッドから再作成されます。
そして、自分が何をしているのかを知っていると思う人々のための説明は次のとおりです。
単一のコマンド:
git reset --hard origin/master
ローカルの変更をすべて破棄し、現在のブランチを の最新のフェッチ済み状態に再ポイントしますorigin/master
。これは、この回答の冒頭にある 4 つのコマンドとまったく同じ効果がありますが、カーテンの後ろを見ることはありません。
すべてのファイルを破棄し、すべての変更を失いたい(!) 場合は、次の操作を実行できます。
git reset --hard origin/master
これにより、「マスター」ブランチのローカル コピーと作業コピーの状態が、アップストリーム (元のリモート) から取得した最後のバージョンにリセットされます。
注: これは、
git clone
)master
ブランチのクローンで作業しています"master" 以外のブランチで作業している場合は、コマンドを調整します。
git reset --hard origin/branch1
何もコミットしていない場合は、git reset --hard
それで十分です。
さまざまなモード ( --hard、--mixed、--soft) で git reset がどのように機能するかを説明する優れたリソースを次に示します。
免責事項:
git reset --hard
安全でない操作です。コミットされていない変更は作業ツリーから削除され、元に戻すことはできません。