如果在Git中同时存在多个操作会发生什么?

时间:2013-10-29 17:06:39

标签: git webserver

说我有一个git服务器。用户X想要添加文件A,B,C,D,E,然后提交,而用户Y想要添加F,G,H,I,J,然后提交。

如果它们恰好在同一时间运行,git add F, G, H, I, Jgit add A, B, C, D, E进程中是否可以运行commit -m 'user X commit',以便将Y添加的文件混合到用户中X的提交(特别是当文件A~E很大并且需要花费很多时间来添加和提交时)?

如果有可能,是否有解决方案?

1 个答案:

答案 0 :(得分:1)

首先,在git addgit commit之间输入有执行延迟。因此,假设git add是“同时”执行的,第一个执行git commit的用户将提交所有文件,而另一个用户将被发出错误,表示没有任何内容可以提交。

这都假设两个“用户”在同一目录中作为相同的“用户”运行。这与真正的git工作流程无关,其中每个“用户”都是它自己的用户,并使用它自己克隆的普通仓库版本。您提到的问题可能发生在git push级别。但是,在远程仓库上收到“推”的第一个用户将按预期更新,而另一个用户将被发出错误“推送被拒绝”,因为那时树和“慢”用户会出现不一致必须在其他用户的提交上应用他的更改。如果没有任何冲突,那将很容易解决。

我建议您阅读:http://www.danielmiessler.com/study/git/或其他任何git教程。

如果您正在谈论版本控制的部署,许多人可能会同时访问,我强烈建议您更改工作流,以便使用外部存储库,通过推送将其发布到公共部署并部署在公共部署上 - 通过git clone然后git pull使用

  user1 local repo git push to --> common repo <-- git clone/pull on common server
  user2 local repo git push to ----^