首先:您不需要为每个版本的软件创建自己的存储库。如果你发布,创建一个标签,这就是你所需要的。参考这个标签,你总是可以回到发布的版本。
如果您有一个中央存储库,允许您的两个开发人员中的每一个推送到该存储库,那么您必须将该存储库设为一个裸存储库(就像您引用的问题建议中接受的答案一样)。
裸存储库没有签出的工作副本,因此您可以随时推送到它们(至少只要您之前获取最新版本)。
但是您的情况听起来有点不同:例如,如果您有两台计算机,每台计算机都携带一个工作副本,并且想要在这两个盒子之间推/拉,则解决方案是有一个仅在推送到主服务器时使用的分支从另一台计算机。
以下工作流程(假设您要将分支的更改推送到当前已签出分支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
——他从 alice中提取更改,而不是让她将更改推送到他的回购。假设 alice 的计算机在 bob 的 repo 中配置为远程alice
,并且 bob 当前已签出myfeature
分支。
鲍勃都可以
git pull alice
ifalice/myfeature
被配置为他的分支的跟踪分支myfeature
(用 设置它git branch --set-upstream myfeature alice/myfeature
)。或者
git fetch alice
git merge alice/myfeature
如果 alice 的myfeature
分支未配置为跟踪分支。