私は間違って別の枝を引っ張って、元に戻すにはgit reset [email protected]{1}
でした。今私がgit status
と入力すると、私が引っ張った枝から、追跡されていない、修正されたファイルの巨大なリストが得られます。Git:git pullを元に戻した後にunstagedな変更を削除しますか?
これらをステージングから削除して、コミットする必要はありません。
私は間違って別の枝を引っ張って、元に戻すにはgit reset [email protected]{1}
でした。今私がgit status
と入力すると、私が引っ張った枝から、追跡されていない、修正されたファイルの巨大なリストが得られます。Git:git pullを元に戻した後にunstagedな変更を削除しますか?
これらをステージングから削除して、コミットする必要はありません。
したいコマンドが
git reset --hard
ある--hard
フラグは、ヘッドを移動するだけでなく、彼らはそのコミットであったようであることをローカルファイルをリセットするためだけでなく、gitのを伝えます。
これは、最初のリセット時に--hard
を使用してプルを元に戻すと、追跡されたファイルの変更のみをリセットします。プルによって導入された新しいファイルはすべて削除されますが、プルによって導入されたファイルはまだそこにありますが、あなたのHEADは、これらのファイルが追跡されないコミットになります。
ユーザーgit clean
git clean -n
はドライランを行い、それが削除なるかを紹介します、作業コピーから人跡未踏のファイルを削除するには。そうでない場合は、-f
強制フラグを指定して実際にファイルを削除する必要があります。
git cleanには注意してください。これらのファイルはトラックされていないため、偶然に削除したファイルを取り戻すことはできません。
@ 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
を実行してください。
私は 'git reset -hard'を実行しましたが、まだそのブランチからuntrackedファイルがあります。 – Rudolph
@ルドルフ - これを見てください:http://stackoverflow.com/questions/61212/how-to-remove-local-untracked-files-from-the-current-git-working-tree –
@ルドルフは編集するために編集その場合 – SpoonMeiser