我有一个版本化的目录,其中包含一堆不适合版本控制的pdf资源,但仍需要与我实际想要版本化的一些html文件一起存在。测试服务器和生产服务器上都存在相同的文件夹,我使用git将更改从一个服务器部署到另一个服务器。我想从版本控制中删除pdf而不从任何服务器上的工作目录中删除它们。
我使用了git rm -r --cached
,它将它们从git repo中删除而不将其从我的工作目录中删除,我已将它们添加到.gitignore
,因此Git不会将它们视为未跟踪的文件,但是当我提交更改并将更改提取到我的其他服务器时,所有这些pdf都会从另一台服务器上的工作目录中删除。我希望他们留下来。有什么建议?
请注意,这是不重复的问题,涉及从缓存中删除而不从本地文件系统中删除。这是一个分布式场景。
答案 0 :(得分:1)
在服务器上执行以下操作:
git pull
要获得更改,pdfs将暂时消失。 git reset HEAD~1 --hard
这应该会在删除pdf之前将您移回提交。 HEAD~1是当前提交之前提交的简写。如果在几次提交之前删除了文件,则可以在删除pdf之前将HEAD~1替换为提交的SHA。git reset ORIG_HEAD --mixed
这会将您的分支指回正确的提交并重置暂存区域,但不会重置工作目录中的文件。git checkout -- .gitignore
才能将其恢复。完成这些步骤后,pdf应该仍然在那里,你的回购应该是最新的。
答案 1 :(得分:0)
请按照以下步骤操作..
这样,git服务器上的文件就不会被删除。但由于他们在.gitignore,他们不会被版本化。意思是当你拉动时,你也会得到pdfs。
例如,请查看this repo。它有两个文件asd.txt
和qwe.txt
,其中使用.gitignore忽略asd.txt
。但是,当你拉动代码时,你将得到两个文件。