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