说我有一个git服务器。用户X想要添加文件A,B,C,D,E,然后提交,而用户Y想要添加F,G,H,I,J,然后提交。
如果它们恰好在同一时间运行,git add F, G, H, I, J
和git add A, B, C, D, E
进程中是否可以运行commit -m 'user X commit'
,以便将Y添加的文件混合到用户中X的提交(特别是当文件A~E很大并且需要花费很多时间来添加和提交时)?
如果有可能,是否有解决方案?
答案 0 :(得分:1)
首先,在git add
和git 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 ----^