2012-02-17 262 views
1

我目前使用git的项目有两个参与者(我和我的朋友)。所以我做了以下事情:远程仓库应该如何与GIT中的本地仓库同步?

我在一台机器上创建了一个存储库,该存储库始终可以通过本地网络上的任何机器访问。

我们都将这个存储库克隆到我们各自的本地机器中,创建本地存储库。

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

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

现在,当我完成这个分支,并且我希望它与主合并时,我只是做了一个结账,掌握并做了一个git merge my_branch。现在我该如何使这种变化反映在全球知识库和其他本地知识库中?我是否也必须在那里发布合并命令?还是有一些推拉方式,以便合并自动同步?

什么是git哲学?是否应该通过提交将所有本地存储库和全局存储库完全同步提交,以便各地的树完全相同?或者单独的树木是否可以不同,并且需要从遥控器中拔出哪些分支?

我创建的远程仓库是一个纯仓库

回答

5

你之后(我通过搜索无论我需要做,但是我感到很是如何工作的困惑命令了解到GIT)已合并到master中,使用git push将合并推送到您的原始存储库,就像您使用其他提交一样。您的朋友需要git pull才能获得您的更改,但只要源中没有新内容,并且您的朋友没有在自己的副本中对主人进行任何更改,则无需执行其他合并。

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

+2

请注意,这样的中央工作流程依赖于中央存储库作为裸存储库。你不能(不应该)推入一个工作目录的仓库 – Gareth 2012-02-17 12:06:45

+0

@Gareth我创建的远程仓库是一个裸仓库 – AnkurVj 2012-02-17 12:08:06

+0

@AnkurVj那么你会好的:)但当然这是一个有用的笔记给其他人谁发现了这个问题 – Gareth 2012-02-17 12:08:44

0

现在我该如何使这种变化反映在全局存储库和其他本地存储库中?我是否也必须在那里发布合并命令?还是有一些推拉方式,以便合并自动同步?

有一个git push命令。

0

合并后您需要推送您的更改。 不要git push

1

这基本上是在我的办公室在公司网络上的情况,以及(每个开发人员的计算机上的混帐回购协议,以及一个。

你不需要远程后重新合并更改您已将它们合并到您的master中。首先,你需要确保中央回购与

git --bare init 

创建于是,当有人想更改合并到主回购,他们做了git pull(得到,因为已经发生的任何更改自己最后一次提交;这是你可能需要在你的末尾做一些合并的地方),然后是git push(显然在解决冲突之后)。结果是“中央”服务器上的新合并提交。

我不知道这是否是The Git Way,但它对我们来说目前为止还是有效的。

1

我会强烈,强烈建议您花时间(我通过搜索无论我需要做,但是我感到很是如何工作的困惑命令了解到GIT)至少浏览了progit.org book。它有大量的信息和一些漂亮的图形来解释分支和提交的概念。

还是有一些推拉方式,使合并自动同步?

如果你想自动从您的当地的一个分支推向远程分支,有工具,这将有助于(git post hooks,例如)。不过,我有充分的信心说,这是而不是一个适合每个人需求的解决方案 - 这里有一个link to a related question,你可能会觉得有用。

编辑:

什么是git的理念是什么?是否应该通过提交将所有本地存储库和全局存储库完全同步提交,以便各地的树完全相同?或者单独的树木是否可以不同,并且需要从遥控器中拔出哪些分支?

Git是不是一个服务器 - 客户端SCM,这是一个分布式版本控制系统 - 治疗混帐一样的,你会的,比方说,CVS或SVN并不总是正确的方法。在SO上相当流行的工作流程被发现here - 在开发自己的工作流程时,您可能会发现很多相关问题。 (1)(2)