我有一个文件夹images
曾经被跟踪过,我使用以下文件进行了跟踪:
git rm -r --cached images
。
我还在我的gitignore中添加了images/
。但是,我担心当我提交并拉动我的生产服务器时,图像文件夹将被删除。原因是因为github应用程序实际显示文件已被删除。
那么如何防止git pull
上的生产服务器上的本地删除,未跟踪和忽略的文件被删除?
答案 0 :(得分:7)
使用git rm --cached
,文件将从git中删除,但它们仍然在您的本地文件夹中。因此,在push
之后,服务器上的文件将被删除,其他人也会删除。存储库pull
。
更好的方法是使用git update-index
。
git update-index --assume-unchanged images/*
它应该满足您的要求。唯一的问题是,如果其他人'更改这些图像文件并推送到git服务器,您pull
时仍会收到这些更改。
答案 1 :(得分:1)
我实际上以不同的方式做到了。由于只有2个人使用git(我和另一个开发人员),我们只是在本地取消跟踪文件夹。然后我提交了新的.gitignore
并将其拉到了生产服务器上。之后我没有跟踪生产服务器上的文件夹,瞧!
答案 2 :(得分:0)
对于新队友来说可能更好的另一种选择是将来使用以下内容来添加所需的目录,但省略其内容:
**/images/*
!**/images/readme.md
由于Git不关心空目录,诀窍是告诉Git不跟踪images
目录中的任何内容。但是要首先创建目录,我们需要一个文件,因此最后我们说"不要跟踪此目录中的任何内容除之外的所有内容。 #34;
答案 3 :(得分:0)
git rm --ignore-unmatch --cached my_folder/**/**
这将取消跟踪“ my_folder”及其子文件夹(向下一级)中的所有文件