git - 防止忽略的文件在 pull 过程中被删除

标签 git git-pull

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

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

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

这将从 Git 中删除该文件,但不会从我的本地存储库中删除该文件。它还将阻止它被进一步跟踪。

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

git pull origin master

我不想在从 git 远程存储库中删除 config.php 文件时将其从服务器中删除。

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

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

最佳答案

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

如果您确实想防止这种情况发生,请在服务器上编写一个提交 Hook ,以验证提交不会在您不希望他们提交的显式路径中添加任何内容,并禁止任何此类提交从一开始就被推。这样开发人员就必须在本地解决他们的提交。

请注意,“添加删除文件的新提交”是不够的,因为临时提交已经添加了该文件。有必要将删除提交与最初意外添加的提交一起压缩。

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

关于git - 防止忽略的文件在 pull 过程中被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32269331/

相关文章:

git - 当我使用 "git branch"时是否可以显示最新的提交?

git - 我如何告诉 Git 在获取/pull 时忽略某些分支?

merge 后Git pull没有结果

git - 分支正在 git push 上 merge 到自己中

git push 被拒绝 : error: failed to push some refs

具有多个分支的 Git pull - 与错误的分支 merge

Github 存储库不使用 gh cli 克隆

git - Maven 发布插件在 git 推送错误时显示明文密码

git - 将旧的 git commit merge 到当前分支的顶部