如何从工作目录删除所有更改,包括新的未跟踪文件。我知道git checkout -f这样做,但它不会删除自上次提交以来创建的新的未跟踪文件。
有人知道怎么做吗?
如何从工作目录删除所有更改,包括新的未跟踪文件。我知道git checkout -f这样做,但它不会删除自上次提交以来创建的新的未跟踪文件。
有人知道怎么做吗?
当前回答
另一种解决方案是提交更改,然后删除这些提交。这在一开始并没有立即的好处,但它提供了以块提交的可能性,并为备份创建了一个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:…”。然后使用交互式rebase删除坏的提交并保留好的提交。
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 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 checkout -- FolderToClean/*
看看git clean命令。
git-clean -从工作树中删除未跟踪的文件 从当前目录开始,递归地删除不受版本控制的文件,从而清理工作树。 通常情况下,只有git不知道的文件会被删除,但是如果指定了-x选项,忽略的文件也会被删除。例如,这对于删除所有构建产品很有用。
另一种解决方案是提交更改,然后删除这些提交。这在一开始并没有立即的好处,但它提供了以块提交的可能性,并为备份创建了一个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:…”。然后使用交互式rebase删除坏的提交并保留好的提交。
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 reset --hard origin/{branchName}
它将删除所有未跟踪的文件。