git部署:未跟踪的工作树文件被合并覆盖
我正在尝试实现一个基于git的部署过程,比如部署web应用程序。 基本上,它由实时服务器上的两个repo组成:git部署:未跟踪的工作树文件被合并覆盖,git,deployment,Git,Deployment,我正在尝试实现一个基于git的部署过程,比如部署web应用程序。 基本上,它由实时服务器上的两个repo组成: 你推动的裸回购“枢纽” web服务器公共目录中的正常repo,在其中从“中心”提取。如果集线器具有 适当的更新后挂钩 问题是,在我的项目中,我有许多目录,如/upload/,其中包含开发期间的示例数据和Web服务器上的实时数据 理想情况下,我希望将上载/文件夹保留在本地回购上,但不在实时回购上拉它。 现在,“部分”拉动似乎不可能,不是吗 因此,即使不是最佳解决方案(我无法克隆本地r
- 你推动的裸回购“枢纽”
- web服务器公共目录中的正常repo,在其中从“中心”提取。如果集线器具有 适当的更新后挂钩
- 我将上载/文件夹添加到.gitton本地和实时repos
- 我用git rm——缓存上传删除了它/
- 我把这个项目推到了“中心”回购协议上
- 在实时回购中,我从中心提取
- 我得到错误:未跟踪的工作树文件将被merge…upload/xxx覆盖
解释和理解这一切可能很困难,但任何想法都是受欢迎的。假设您不想签出比分支负责人更老的提交,则无需执行所有这些操作 您需要做的是在新提交中消除
upload/*
,从那时起,任何看到新提交的人都不会看到upload
目录
显然,您希望将upload/*
文件备份到“hub”和任何从中提取的克隆上,在提交中删除upload,然后将备份放回原位。现在数据存在于您的目录中,但git将不再跟踪它们
注意:如果不备份,您将删除hub上的上传/*
数据(可通过签出较旧的提交进行恢复)或从中提取数据的任何人(如果未跟踪,则由git出错;如果跟踪,则通过签出较旧的提交进行恢复)。不过,最好先备份一下
例如:
$ git init
$ mkdir upload
$ echo 'upload/*' > .gitignore
$ touch to_track upload/not_track
$ git add .gitignore to_track upload/not_track
$ git commit
现在您在存储库中有了上载/不跟踪
$ cp upload/not_track ../backup
$ git rm upload/not_track
$ git commit
$ mv ../backup/not_track upload/
现在,当前目录中的文件没有更改,但是上载/not_track
不再位于存储库中(从这次提交开始)。如果没有看到git repo,很难确定,但是您所描述的不应该发生
是否已检查文件夹中的隐藏文件(例如,其中的.gitignore文件
,或.DS\u Store
(Mac文件夹浏览器缓存)或类似文件?)。git rm不会自动删除被忽略的文件
如果您在git rm
之前忽略了git,则必须将其从ignore中删除,或者直接从rm
中删除。git rm--cached
仅从索引中删除文件,这意味着接下来将提交什么。它实际上不会删除该文件,也不会在下次提交时将其标记为删除。如果您已经完成了git add upload/*
(并且没有提交),那么它只能做一些事情,否则它什么也做不了。哇,好的洞察力,简单明了的解决方案!我没想过。谢谢!