并发git pull并推送来自不同位置的同一个远程repo

时间:2011-05-17 08:26:18

标签: git

假设我从一些远程git仓库中提取或克隆 如果发生什么 1)在我开始拉/克隆之后 - 有人开始向中间的那个远程仓库推送? 2)当有人正在将代码推送到远程git repo时 - 我开始克隆它吗?

在每个案例中我最终会得到什么?

由于

1 个答案:

答案 0 :(得分:4)

两种情况都没有问题。在案例1)中,当某人推动时,ref(一个分支名称,通常是)更新时会有一个点,并且任何获取(克隆和拉动的基本部分)将在该点或新的之前获得旧值之后一个。只有当它所需的所有对象都在远程存储库的对象数据库中时,才会更新ref,因此没有问题。 2)同样地,如果构成你的拉动的提取发生在被推送到的ref之后更新,那么你将获得新值,否则你将得到旧值。

(一个可能的例外是“dumb HTTP”传输,你需要在每次推送后在远程存储库中运行git update-server-info,因此获取可能会在推送之后但在之前立即失败hook运行该命令 - 但是,我认为现在使用愚蠢的HTTP传输是相对罕见的。)