Git Remote分支机构

时间:2011-06-08 11:35:25

标签: git branch remote-branch

我目前使用中央裸存储库进行Git设置,两个开发人员可以通过远程存储库访问该存储库。我在创建分支时遇到了问题,然后尝试将该分支从远程存储库推送到中央裸存储库,与this post中的类似。

我已经读过跟踪分支机构是执行此操作的最佳方式,但我正在阅读的Version Control with Git书中说,跟踪分支机构旨在跟踪来自另一个存储库的更改,但它们不应该用于合并和提交。

根据我目前的设置,处理不同分支的最佳方法是什么?

我原本打算为每个版本/版本的软件都有一个分支,但似乎最简单的方法是为每个版本/版本创建一个单独的存储库。

1 个答案:

答案 0 :(得分:1)

首先:对于每个版本的软件,您都不需要自己的回购。如果您发布,请创建一个标签,这就是您所需要的一切。引用此标记后,您始终可以返回已发布的版本。

如果你有一个中央仓库,你的两个开发商中的每一个都应该被允许推送,那么你必须让这个仓库成为裸仓库(就像你引用的问题中的接受答案一样)建议)。

Bare存储库没有签出工作副本,因此您可以随时推送它们(至少在您之前获取最新版本时)。

但是你的情况听起来有点不同:例如,如果你有两台计算机,每台计算机都有一个工作副本,并且想要在这两个盒子之间推/拉,那么解决方案就是有一个仅在从另一台计算机上推进掌握。

以下工作流程(假设您要将分支myfeature的更改从notebook推送到当前已签出分支desktop的远程myfeature

desktop

git checkout -b temp

然后,在notebook

git push desktop myfeature:myfeature

回到desktop

git checkout myfeature
git branch -D temp 

就是这样。

另一个替代方案(在两个开发人员(alice和bob)工作在同一分支的情况下)将是 - 如果bob想要从alice获得最新版本的myfeature - 他拉< / strong> alice的变化,而不是让她推动她的变化进入他的回购。假设alice的计算机在bob的repo中配置为远程alice,bob当前已检出myfeature分支。

鲍勃没有

git pull alice

如果将alice/myfeature配置为其myfeature分支的跟踪分支(将其设置为git branch --set-upstream myfeature alice/myfeature)。或

git fetch alice
git merge alice/myfeature

如果alice的myfeature分支未配置为跟踪分支。