我目前使用中央裸存储库进行Git设置,两个开发人员可以通过远程存储库访问该存储库。我在创建分支时遇到了问题,然后尝试将该分支从远程存储库推送到中央裸存储库,与this post中的类似。
我已经读过跟踪分支机构是执行此操作的最佳方式,但我正在阅读的Version Control with Git书中说,跟踪分支机构旨在跟踪来自另一个存储库的更改,但它们不应该用于合并和提交。
根据我目前的设置,处理不同分支的最佳方法是什么?
我原本打算为每个版本/版本的软件都有一个分支,但似乎最简单的方法是为每个版本/版本创建一个单独的存储库。
答案 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
分支未配置为跟踪分支。