Git将我的新推送文件标记为在远程存储库(登台服务器)中删除

时间:2014-01-31 18:15:38

标签: git

每当我将本地代码推送到我的登台服务器(远程存储库)时,它们都不会显示,而是以“git status”的形式显示为已删除。如何才能正确设置?

我所以我的工作在我的本地存储库('development'分支)。其他非Git人员正在将文件直接放在服务器上(并且服务器也会自行更新一段时间)。我已将服务器设置为“暂存”分支。当我想将我的代码推送到服务器时。我在'staging'分支中添加/提交服务器上所做的更改。然后我把它们拉到我当地的'staging'分支。我将它们与我的'开发'分支合并。然后我将'staging'分支推回到服务器。不幸的是,这已经不再有效 - 我的新文件会立即标记为“已删除”,并且我更改的文件会被标记为“已修改”。我该如何解决这个问题呢?这些文件甚至不会出现在目录中。

我怀疑这与我在那里做出的改变有关,以解决这是一个实时登台服务器的事实,我希望能够推送到签出分支。

git config receive.denyCurrentBranch ignore 

任何帮助,想法,轻蔑,嘲笑,决心,赞赏。

1 个答案:

答案 0 :(得分:0)

  

您是说您正在与未使用源代码控制的开发人员合作 - 只是将更改直接推送到您的部署?

你可以设置一个允许你的裸仓:

  • 添加并接受来自其他工作树的任何文件(不受git管理)
  • 推送自己的文件(先拉出后,以便考虑非git用户添加的文件)

第一点可以通过cron作业完成,例如每分钟执行一次:

cd /your/bare/repo
git --work-tree /path/to/non/git/workingtree add -A
git commit -m "add files from non-git users"

(您可能希望调整此天真的实现,以便仅在添加文件时提交)

第二点需要在该裸仓库上通过 post-receive hook 完成,以便自动在非git用户仓库上复制您的文件。

这不是一个理想的解决方案,因为总是存在竞争条件的可能性:它需要更强大,可能有一些chown或其他权限管理,防止非git用户进行任何修改你正在推动 - 更新工作树。

但它向您展示了让两个世界相互合作的可能方式。