2012-10-01 17 views
10

私はいくつかの変更を行ったし、いくつかのファイルを編集した、今私はすべてを破棄したいとちょうど私がディスク上に持っていることは、元のリモートより他に何もないことを確認してくださいgitクローンリポジトリの "reset"コマンドとは何ですか?

git clone <address> 

でリポジトリをダウンロードしていますコードベースのバージョン:正しいコマンドは何ですか?

答えて

11

はこれがないことであるリモートを原点

git reset --hard HEAD 
git checkout origin/master 
git branch -D master 
git checkout -b master 

と呼ばれていると仮定すると:それはなぜreset --hardだ(ディスク上の任意の変更されたファイルを破棄

  1. (オプションgitのステータスは何も変更されたファイルを言っていない場合) )

  2. リモートマスターブランチをチェックアウトします(注: "デタッチヘッド"状態になります)

  3. コールすなわち新しいmasterブランチ今

あなたはおそらくわずかに異なる何かをしたい...など、現在のヘッド(すべてのローカルの変更を捨てる)ローカルmaster支店を削除しますあなたの変更を捨てたり、別の名前のブランチに入れたりしないでください...あなたが再びmy-silly-changesと呼ばれる新しいローカルブランチの現在の変更を保存し、その後、masterと呼ばれる古いローカルブランチを削除し

git checkout -b my-silly-changes 
git branch -D master 
git checkout -b master origin/master 

それらを必要がありますときに、すべての後にあなたが知っていることはありませんし、最終的にリモートヘッドからそれを再作成します。

origin/master

はあなたが指すようにしたいリモートブランチがあり、かつ

master

git branch --set-upstream-to=origin/master master

+6

すべての未追跡のファイル(ビルドプロダクトなど)を取り除くには、 'git clean -xfd'も行うべきです。 –

+0

クールはその1つを知らなかった –

+2

最初の4つのコマンドは、間違いなく冗長です。あなたが 'master'にいる場合、' git reset -hard origin/master'は4つのコマンドと同じことを行います。それでも、ローカルブランチを作成するオプションについては+1しています。 – sleske

0

何もコミットしていない場合は、git reset --hardで十分です。

Hereは、さまざまなモードでgitをリセットする方法を説明する良いリソースです(--hard、--mixed、--soft)。

免責事項

git reset --hardは危険な操作です。これは、作業ツリーからの未変換の変更をすべて削除し、元に戻すことはできません。

+0

* "私はすべてを捨てて、ディスク上にあるものが元のリモートバージョンのコードベースであることを確認してください" * - 上記の方法はautoreconfで 'configure.ac'から生成された' configure'スクリプトのように、クローンの一部ではないファイルシステムにファイルを残してください。 Gitに任せて、簡単な作業をして、不可能にするのは難しいです。 – jww

1

あなたが特定されている場合は、すべてのファイルを破棄したい、とすべての変更を失う、あなたが行うことができます(!):

git reset --hard origin/master 

これは「マスターのローカルコピーの状態をリセットします"あなたのアップストリーム(元のリモート)からフェッチした最後のバージョンに作業コピーをコピーします。

注:これは場合は、リモートmasterブランチ

のクローンで作業している

  • あなたの上流のリポジトリが「起源」(git cloneのデフォルト)
  • と呼ばれていることを前提としてい「master」以外のブランチで作業している場合は、コマンドを調整します。

    git reset --hard origin/branch1 
    
-1

またに似何かをする必要があるかもしれません

はあなたが作業したいローカルブランチです

関連する問題