回答:
git reset --hard # removes staged and working directory changes
## !! be very careful with these !!
## you may end up deleting what you don't want to
## read comments and manual.
git clean -f -d # remove untracked
git clean -f -x -d # CAUTION: as above but removes ignored files like config.
git clean -fxd :/ # CAUTION: as above, but cleans untracked and ignored files through the entire repo (without :/, the operation affects only the current directory)
実際に削除せずに、何が削除されるかを事前に確認するには、-n
フラグを使用します(これは基本的にテスト実行です)。実際に削除する準備ができたら、-n
フラグを削除します。
git clean -nfd
git clean -fxd
何をしているのかわからない場合、実際には非常に危険です。データベースなど、非常に重要な追跡されていないファイルを完全に削除してしまう可能性があります。注意してください。
git clean -f -d
無視されたフォルダからもファイルを削除することに注意してください。つまり、ローカルログなどはすべてなくなります。通常、それは大きな問題ではありませんが、知っておくとよいでしょう。
私が頻繁に使用する最も安全な方法:
git clean -fd
/docs/git-clean
ページごとの構文の説明:
-f
(エイリアス:)--force
。Git構成変数clean.requireForceがfalseに設定されていない場合、-f、-n、または-iを指定しない限り、git cleanはファイルまたはディレクトリの削除を拒否します。2番目の-fが指定されない限り、Gitは.gitサブディレクトリまたはファイルを含むディレクトリの削除を拒否します。-d
。追跡されていないファイルに加えて、追跡されていないディレクトリを削除します。追跡されていないディレクトリが別のGitリポジトリによって管理されている場合、デフォルトでは削除されません。そのようなディレクトリを本当に削除したい場合は、-fオプションを2回使用します。コメントで述べたように、git clean -nd
実際に削除する前に、何を削除して何を削除するかを教えてくれる予行演習を行うことが望ましい場合があります。
git clean
ドキュメントページへのリンク:https :
//git-scm.com/docs/git-clean
git clean -nd .
実際にファイルを削除する前にgit clean -fd .
add -A
+ commit -a
+ revert head
最初の前にgit clean
。削除を1つ1つ確認することは、主要なシナリオに対応できません。また、空走は特効薬ではありません。レビュー中に何かを見逃したり、間違えたりした場合はどうなりますか?
すべてのために ステージングされていないファイルを使用します。
git checkout -- .
.
最後には重要です。
.
プロジェクトの特定のサブディレクトリのみをクリアするために、サブディレクトリ名で置き換えることができます。問題は特にここで扱われます。
src/app/work/filename.js
とに変更がありました../app/working/test/filename.js
。git checkout -- .
ブランチで使用すると、最初のファイルのみが削除されます(先頭の../なし)。そのcd ../
ため、そのコマンドを使用して2番目のファイルを削除するために、2番目のロケーションディレクトリに移動する必要がありました。
次の作品:
git add -A .
git stash
git stash drop stash@{0}
これにより、ステージングされていないローカル変更とステージングされたローカル変更の両方が破棄されることに注意してください。したがって、これらのコマンドを実行する前に、保持したいものはすべてコミットする必要があります。
典型的な使用例:多くのファイルまたはディレクトリを移動した後、元の状態に戻したい場合。
git stash drop
ですか?
git add -A .
)にいることを確認してください。ファイルが一致しなかったので、30mを失いました。ありがとう!
これは、次の2つの手順で実行できます。
git checkout -f
git clean -fd
git reset --hard origin/{branchName}
追跡されていないファイルをすべて削除します。
代替ソリューションは、変更をコミットしてから、それらのコミットを取り除くことです。これには、最初はすぐにメリットはありませんが、チャンクでコミットし、バックアップ用のgitタグを作成する可能性が広がります。
次のように、現在のブランチでそれを行うことができます:
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
または、デタッチされたHEADでも実行できます。(BRANCHNAMEブランチで開始すると想定):
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
ただし、私が通常行うことは、チャンクでコミットすることで、その一部またはすべてのコミットに「DISCARD:...」という名前を付けます。次に、インタラクティブなリベースを使用して、不良コミットを削除し、良好なコミットを維持します。
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
これはより詳細ですが、破棄する変更を正確に確認できます。
git lol
そしてgit lola
ショートカットは、このワークフローで非常に参考にされています。
私が使用した特定のフォルダーについて:
git checkout -- FolderToClean/*
これはおそらくnoobの答えですが、私はWindowsにTortoiseGitを使用しており、REVERTと呼ばれる優れた機能を備えています。したがって、ローカルのステージングされていないプッシュされていない変更を元に戻すには、次のようにします。
git help reset
とgit help clean