0

在以前的项目中,我曾经使用运行“svn up”的 cron 作业来使测试站点保持最新。

我正在尝试在使用 git 的新项目中重现相同的内容。

*/5 * * * * cd /path/to/project; git checkout .;  sudo -u nonrootuser git pull >/dev/null 2>> /path/to/project/cron.log; chgrp web . -R;

我添加了最初的 git checkout 。看看我是否可以解决这个问题,但它仍然存在。问题如下,大约每周一次,我收到此消息:

error: Your local changes to 'path/to/aFileThatDidntExistLocally.xxx' would be overwritten by merge.  Aborting. Please, commit your changes or stash them before you can merge.

但是在 pull 命令之前该文件确实不存在。几乎就像 git pull 命令正在获取文件,暂存它们,然后就像阿尔茨海默病一样,无法识别已创建文件,因此由于文件已经存在而中止。

即使我删除了文件,它也会再次发生。如果我用我的根用户运行一个简单的“git pull”,也会发生这种情况。而且它似乎是一种随机的,在过去的三周里它发生在我身上大约 3 次。其余时间,cron 作业按预期工作,每 5 分钟一次。

我发现让它再次正确拉动的唯一方法是运行“git clean -f”,但它不是我想放在我的 cron 作业中的东西,因为它会删除我所有未跟踪的文件。

我怀疑提交/推送,但我没有看到任何异常。发生了什么事,我怎样才能持续更新我的测试站点,而不必每次都删除所有未跟踪的文件?

(编辑)这是我的 .gitignore 和 .git/config 文件的副本:http: //pastebin.com/SxXbshuN

4

0 回答 0