清除所有git补丁

时间:2018-03-28 20:34:19

标签: git

你如何摆脱git中未跟踪的补丁文件?我不明白如何让自己脱离这种状态。 运行的命令是:

git format-patch 'some-commit-hash'^..'some-commit-hash'

git am *.patch

虽然那并不完全符合我的意图,但我仍然遇到各种未跟踪的.patch文件。我已经尝试对分支进行硬重置,中止格式补丁。交换到其他分支机构。我在这里不知所措。

1 个答案:

答案 0 :(得分:1)

确实,git reset --hard SHA1不会删除未跟踪的文件。它只会重置指向SHA1 / commit / branch的HEAD指针,并相应地覆盖索引和工作目录(只更改跟踪文件)。

如果你想以自动的方式“清理”你的工作目录 - 但有点过于激进,要注意删除文件无法取消 - 可能的解决办法就是运行:

git clean -d -x -n
# dry-run to inspect the untracked and ignored files
git clean -d -x -f
# to remove all these files

有关这些命令的更多信息,您可以看到例如git clean的文档以及"Discussion" section of the doc of git reset

如果您想要更多灵活性,另一个解决方案是依靠git ls-files来显示此类文件的列表,并可能使用bash管道将其链接。下面是一个这样的例子,其灵感来自this answer to "How can I see list of ignored files in git?"

git ls-files --exclude-standard --ignored --others | grep '\.patch$'
# to display the ignored or untracked files with .patch file-extension
git ls-files --exclude-standard --ignored --others | grep '\.patch$' | xargs rm -v
# to remove these files