远程存储库应该如何与GIT中的本地存储库同步?

时间:2012-02-17 12:00:03

标签: git

我目前正在使用git进行一个有两个参与者的项目(我和我的朋友)。所以我做了以下事情:

我在一台机器上创建了一个存储库,该机器总是可以被我们本地网络上的任何机器访问。

我们都将此存储库克隆到我们各自的本地计算机上,创建了本地存储库。

现在假设在某个时间点(其中所有三个存储库副本处于完全相同的阶段),我分叉一个分支并在该分支中开始一些开发。我将这些更改推送到遥控器,我看到在遥控器中自动创建了一个新的分支。

在另一台机器上,我将该分支拉入一个同名的新本地分支,以便它们再次处于相同的状态。

现在当我完成这个fork分支,并且我希望它与master合并时,我只是做了一个checkout来掌握并做了git merge my_branch。现在,如何使此更改反映在全局存储库和其他本地存储库中?我是否还必须在那里发布合并命令?或者是否有某种方式来推拉,以便合并自动同步?

git哲学是什么?所有本地存储库和全局存储库是否应该通过提交完全同步提交,以便所有树都完全相同?或者单个树是否可以不同,需要从遥控器拉出任何分支?

(我通过搜索命令来学习GIT,无论我需要做什么,但我对它应该如何工作感到非常困惑)

我创建的远程存储库是一个裸存储库

5 个答案:

答案 0 :(得分:5)

在您合并到master之后,使用git push将该合并推送到您的源存储库,就像您使用任何其他提交一样。您的朋友需要git pull才能获得您的更改,但只要原点没有新内容,并且您的朋友未在自己的副本中对母版进行任何更改,则无法执行其他合并

存储库并不总是完全同步;这是分布式VCS的关键区别之一。

答案 1 :(得分:1)

这基本上也是我办公室的情况(每个开发人员的计算机上有一个git repo,公司网络上有一个。

将这些更改合并到master后,您无需远程重新合并。首先,您需要确保使用

创建中央仓库
git --bare init

然后,当有人想要将更改合并到主仓库时,他们会执行git pull(以获取自上次提交以来发生的任何更改;这是您可能需要进行某些合并的地方你的结尾)然后是git push(显然解决了冲突之后)。结果是“中央”服务器上新合并的提交。

我不知道这是不是The Git Way,但它到目前为止对我们有用。

答案 2 :(得分:1)

  

(我通过搜索命令来学习GIT,无论我需要做什么,但我对它应该如何工作感到非常困惑)

我强烈建议您花点时间至少浏览progit.org book。它有丰富的信息和一些漂亮的图形来解释分支和提交的概念。

  

或者是否有某种方式可以推送和拉动以便合并自动同步?

如果您希望本地分支机构自动推送远程分支,那么有一些工具可以提供帮助({{ 1}},例如)。但是,我有信心说这是一个符合每个人需求的解决方案 - 这里有link to a related question你可能觉得有用。

编辑:

  

git哲学是什么?所有本地存储库和全局存储库是否应该通过提交完全同步提交,以便所有树都完全相同?或者单个树是否可以不同,需要从遥控器拉出任何分支?

Git不是服务器 - 客户端SCM,它是分布式版本控制系统 - 对git的处理方式与您说的相同,例如,CVS或SVN并不总是正确的方法。找到了在SO上相当受欢迎的工作流here - 在开发自己的工作流程时,您可能会发现很多相关问题。 (1) (2)

答案 3 :(得分:0)

  

现在,如何使此更改反映在全局存储库和其他本地存储库中?我是否还必须在那里发布合并命令?或者是否有某种推送和拉动方式,以便合并自动同步?

有一个git push命令。

答案 4 :(得分:0)

合并后,您需要推动您的更改。 做git push