Git:在运行Git pull时,从存储库中删除文件/文件夹,但不要从Git克隆中删除
我添加并提交了一个错误的文件夹。修复.gitignore文件后,我需要从存储库中删除这些文件,但我不希望在服务器上运行Git:在运行Git pull时,从存储库中删除文件/文件夹,但不要从Git克隆中删除,git,Git,我添加并提交了一个错误的文件夹。修复.gitignore文件后,我需要从存储库中删除这些文件,但我不希望在服务器上运行git pull时删除这些文件 我尝试了这里建议的--cached标志 但它就是不起作用。我通过rm--cached file删除该文件。我承认被删除的事实。但是当我git pull时,它会从服务器上删除该文件 更新示例:SF2参数文件(应忽略,因为不同机器的参数不同) app/config/parameters.yml-应在.gitignore中忽略的文件 意外地被推到存储库
git pull
时删除这些文件
我尝试了这里建议的--cached
标志
但它就是不起作用。我通过rm--cached file
删除该文件。我承认被删除的事实。但是当我git pull
时,它会从服务器上删除该文件
更新示例:SF2参数文件(应忽略,因为不同机器的参数不同)
-应在.gitignore中忽略的文件app/config/parameters.yml
- 意外地被推到存储库中
- 修复.gitignore文件
- 我需要将其从存储库中删除,但在服务器上执行
时,不应删除该文件git pull
- 在本例中,只需在服务器上手动备份一个文件,即git pull(该文件已删除),即可恢复备份
- 但就我而言,有很多不同的文件夹/文件
让我们考虑<代码> RePoServer本地机器部署服务器< /代码>。我想通过
local machine
从存储库中删除一些文件(如果另一个local-machine-2
git clone
存储库中没有这些文件),但是当我通过git pull
更新deploy服务器
时,我不想从deploy服务器删除这些文件
IMO,这里有三个选项
1) 将更新索引
与一起使用--假定未更改
标志
git update-index --assume-unchanged app/config/parameters.yml
git update-index --no-assume-unchanged app/config/parameters.yml #Undo effect of previous command
您不会从git repo中删除该文件,但会忽略使用此文件对其进行的任何本地更改
问题是,如果任何上游提交更新了这些文件,git将中止拉取,并出现一个错误,即,您对以下文件的本地更改将被merge覆盖。您可能现在还记得您运行了这个命令,但过了一段时间,您就不会了,并且可能很难判断出什么地方出了问题
2) 使用git
要使用子模块,您必须从父repo中完全删除文件夹(比如app/config
)
git rm -r --cached app/config/
并在app/config中创建一个新的回购协议/
潜在问题-1)可能需要多个子模块,具体取决于你的应用程序结构2)如果所有更改都是配置文件,那么就你将面临的头痛而言,这无疑是一种过火行为
3) 使用嵌套的git存储库
在本例中,您将在第一个内部创建一个git回购
cd ~/Desktop/project
git rm -r --cached app/config/
echo app/config >> .gitignore
cd app/config
git init && git add . && git commit -m "config paramters"
2和3之间的区别在于,使用git子模块,您可以获得repo之间的确切关系,但是使用嵌套repo,您将错过这些信息
此外,您还需要为子模块中的每个此类文件夹创建一个额外的git repo,但您可以使用一个额外的repo来使用shell脚本同步所有此类更改。拉取不会更改服务器上的内容。你的意思是推吗?@bengoesboom-我会在几分钟内更新我的问题的更多细节。也许不太清楚,你有Reops<代码>你的普通服务器>代码>推/拉过VBAR,你想从提交历史中删除OOPsie的所有踪迹而不删除服务器工作树中的浮点,是吗?@ JTHEEL -让我们考虑<代码> RePoServer本地机器部署服务器< /代码>。我想通过local machine
从存储库中删除一些文件(如果另一个local-machine-2
git clone
存储库没有获得这些文件),但是当我通过git pull
更新deploy服务器
时,我不希望从deploy服务器
中删除这些文件——这有意义吗?@alex.dominte将其添加到问题描述中。现在有道理了,但之前没有。+1-对于详细的答案和建议的解决方案,但我相信您理解,对于一个显然简单的问题来说,这些解决方案太复杂了。谢谢