在拉

时间:2015-08-28 10:50:51

标签: git git-pull

我们在组织中使用Git来更新所有项目的服务器代码。通常,开发人员忘记忽略应该忽略的文件(如db config或数据等)并将它们推送到我们的Git服务器。稍后会将其同步到代码运行的实际服务器(借助钩子)。在服务器上执行git pull以获取最新代码。

现在,如果我向.gitignore添加任何特定文件,并使用以下命令将其从indexpush移除到服务器。

git rm --cached config.php
git add .gitignore
git commit -m "removed config file and ignored it"
git push origin master

这将从Git中删除文件,但不会从我的本地仓库中删除。它还可以防止它被进一步跟踪。

然后,{<1}}在服务器上执行,该服务器删除新被忽略的文件导致问题。简单git pull命令在服务器上执行如下:

pull

我不想从服务器中删除git pull origin master 文件,同时将其从git远程存储库中删除。

有时我会以相同的方式删除大量文件,这些文件应保留在服务器上(代码运行的地方)。

最简单且可编程的解决方案是什么?我开发了一个Node.js程序,该程序登录到服务器并以编程方式运行config.php命令。

1 个答案:

答案 0 :(得分:2)

你不能;您正在记录删除,并且在执行更新时正在删除。事实上,如果您提交了一个您不想要的文件,那么您希望发生这种情况;你不会指望它会在之后徘徊。

如果您真的想要防止这种情况发生,请在服务器上编写一个提交挂钩,验证提交不会在您不希望它们提交的那些显式路径上添加任何内容,并禁止任何此类提交从被推到第一位。这样开发人员就必须在本地解决他们的提交。

请注意,“添加删除文件的新提交”是不够的,因为临时提交已经添加了它。有必要将删除提交压缩到首先意外添加它的提交。

如何教育用户是一个单独的问题......