获得一个干净的git沙箱最有效的方法是什么?

获得一个干净的git沙箱最有效的方法是什么?,git,continuous-integration,Git,Continuous Integration,对于我的持续集成构建,我希望确保没有散乱的文件存放在我的git沙箱中,并且没有任何文件被无意中更改 我知道git reset——硬头,这解决了部分问题。但我想我要做的是删除所有未跟踪和忽略的文件。我可以用蛮力的方式来做: rm -rf * git checkout -f 但必须有一种更有效的方法来做到这一点。有什么想法吗?(为后代扩展) 您的问题可以分为两部分:将修改后的文件返回到上次提交时的状态,以及删除不属于存储库的任何额外文件: git reset --hard HEAD 将把您的文件

对于我的持续集成构建,我希望确保没有散乱的文件存放在我的git沙箱中,并且没有任何文件被无意中更改

我知道git reset——硬头,这解决了部分问题。但我想我要做的是删除所有未跟踪和忽略的文件。我可以用蛮力的方式来做:

rm -rf *
git checkout -f
但必须有一种更有效的方法来做到这一点。有什么想法吗?

(为后代扩展)

您的问题可以分为两部分:将修改后的文件返回到上次提交时的状态,以及删除不属于存储库的任何额外文件:

git reset --hard HEAD
将把您的文件恢复到它们在头部的状态,删除任何修改(即使它们是要提交的阶段)


将删除任何未跟踪的文件或目录,包括被忽略的文件(感谢@Jefromi)

单独克隆repo for CI不是更好的解决方案吗


您只需在CI作业之前从工作repo中获取所有提交的更改(无任何工件和本地更改)

git reset--hard HEAD
+
git clean-d-f
?@madth3,谢谢,我认为这确实有效!当你说git sandbox时,你指的是git工作树吗?@Ellipticalview是的,这就是问题的原意。在我写它的时候,我一直在使用Subversion,它通常被称为“沙盒”;我忘了使用
git clean
命令。当我写那个问题的时候,我知道我有似曾相识的感觉嗯,我更频繁地使用了
reset
命令,但是查找
clean
来完成您的需求很容易。您也可以将
-x
与git clean一起使用;这使得它也可以删除被忽略的文件。如果这些被忽略的文件是中间构建产品,并且您的构建过程并不完美,那么这可能非常重要。您是正确的@Jefromi。多亏了你的提示,我注意到,
-x
选项的官方帮助以它结尾,可以用来创建一个原始的工作目录来测试一个干净的构建。你说的“单独克隆”是什么意思?我们谈论的是千兆字节,所以我不想每次都重新克隆。
git clean -f -d -x