以下情况:
我们在GIT中有一些本地配置文件应该删除。
如果我们只是git rm
并将其添加到.gitignore
,则该文件将在每个开发者的计算机上删除。
但是我们想避免这种情况 - 该文件应该不再是git存储库,但也不应该在pull / merge上删除它。
这可能吗?如何?
答案 0 :(得分:1)
git rm --cached
保留本地文件,但将其从存储库中删除。
答案 1 :(得分:1)
没有办法准确地完成您正在寻找的东西。但以下内容可能适合您。
在对现已删除的答案的评论中,您声明您的目标是使用该文件的模板替换要删除的文件。如果该模板文件是由删除旧文件的同一提交创建的,并且文件足够相似,那么git会看到将其视为重命名(这实际上是git mv
所做的)。
当其他开发人员尝试将该更改合并到他们的存储库中时,他们的副本将被重命名而不是删除。如果可能的话,他们对文件进行了本地更改,以防止该提交被合并。此时,他们可以简单地将文件版本复制到临时名称,并使用git checkout HEAD <thefile>
放弃对原始文件的更改。这将允许合并继续进行,包括重命名。之后,他们可以将临时副本移回原始名称。
这确实需要在该存储库的每个非裸副本中进行一些工作,但在任何情况下都不应导致工作被删除。
答案 2 :(得分:0)
1)假设你在主分公司工作:
git rm dont-track-me.txt
git commit
git push origin master
2)现在在开发人员的框中:
git pull # yep, this will delete the file
git checkout HEAD^ dont-track-me.txt
git reset # prevents restaging the file in the index
'dont-track-me.txt'现在作为开发人员工作树中未跟踪的文件出现。 这确实假设在步骤(1)和(2)之间没有发生其他活动;否则可能需要更多的摆弄。