2017-03-15 8 views

答えて

2

したいコマンドが

git reset --hard 

ある--hardフラグは、ヘッドを移動するだけでなく、彼らはそのコミットであったようであることをローカルファイルをリセットするためだけでなく、gitのを伝えます。

これは、最初のリセット時に--hardを使用してプルを元に戻すと、追跡されたファイルの変更のみをリセットします。プルによって導入された新しいファイルはすべて削除されますが、プルによって導入されたファイルはまだそこにありますが、あなたのHEADは、これらのファイルが追跡されないコミットになります。

ユーザーgit clean

git clean -n 

はドライランを行い、それが削除なるかを紹介します、作業コピーから人跡未踏のファイルを削除するには。そうでない場合は、-f強制フラグを指定して実際にファイルを削除する必要があります。

git cleanには注意してください。これらのファイルはトラックされていないため、偶然に削除したファイルを取り戻すことはできません。

+0

私は 'git reset -hard'を実行しましたが、まだそのブランチからuntrackedファイルがあります。 – Rudolph

+1

@ルドルフ - これを見てください:http://stackoverflow.com/questions/61212/how-to-remove-local-untracked-files-from-the-current-git-working-tree –

+0

@ルドルフは編集するために編集その場合 – SpoonMeiser

1

@ SpoonMeiserの回答のようにハードリセットをしますが、reflogをハードリセットしません。 reflogは特別なものです。私たちはそれを調べる必要があるかもしれませんが、日々のgitでそれをリセットする必要はありません。

代わりに、私はあなたが引か前の最後は、あなたのブランチのコミットを見つけると、どうなる:

git reset --hard 46c80011b9845548000f8ed2178755d28c5e6832 

または任意のハッシュです。

git logを実行してハッシュを見つけることができるはずです。プルがマージを実行した場合、最新のコミットはマージになります。 git logの出力は次のようになります。

commit eddb8b70c9167cf88653d7649f054c0d69a5ee8a 
Merge: a89faff 980a815 
Author: jwg <[email protected]> 
Date: Wed Mar 15 10:22:16 2017 +0000 

    Merge branch 'some_random_remote_branch' of git_server:foo/bar into my_precious_local_branch 

2行目は、マージされた2つのコミットを示しています。これらのうちの1つはリモートブランチであり、1つはmy_precious_local_branchです。どのブランチが見つかるはずです。

最後のコミットがマージコミットでない場合、プルは早送りでした。つまり、ローカル支店にはリモートブランチにないものはありませんでした。しかし、依然としてローカルブランチを元に戻すことができます。 git logまで行き、復元するコミットを正確に決定してから、git reset --hardを実行してください。

関連する問題