我必须强调,到目前为止,我对 GIT 的使用(通过 VS2019 团队资源管理器)相当基本:2 个用户,通常在 Master
分支上按顺序工作。很高兴被推荐阅读一些更深入的 GIT 概念介绍。
我们希望通过更类似业务的工作流程开始使用 GIT。我们的想法是保留 Master
用于核心更新/升级,并在发布迷你修补程序时根据过去的提交分叉新分支:我们选择上次发布的提交,并基于此提交创建一个新分支;我们称之为HotFix
。我们进行修复,提交/发布/push
,然后使用 merge
进行 Master
。
所以我们刚刚开始:昨天 Mike 创建了 HotFix
分支,修复了一个错误,提交,发布了更新,并将提交 push
提交到远程。尚未与 Master 合并。今天,Bob 启动了 Visual Studio,选择了 HotFix
分支,没有拉,然后开始处理第二个错误。现在他尝试 push
,但 GIT 不高兴并说:
更新被拒绝,因为您当前分支的尖端落后于其远程对应分支。在再次推送之前集成远程更改。
我们理解这是因为他在开始工作之前没有拉,他在同一分支的迈克/远程版本后面是 1 个提交。当这种情况发生在 Master
上时,我们通常会 pull
并合并/解决任何冲突,然后 push
工作。但在这里,我们不能pull
。还有一条消息说:
当前分支不跟踪远程分支。
我们有点困惑,因为 VS 文档说你需要推送分支以便它跟踪远程,但我们不能 push
因为我们在远程后面有 1 个提交,应该先 pull
,这需要 push
ing.. 这是第 22 种情况吗?
我读到 here,$ git branch -u origin/dev
将建立“您当前 HEAD 分支的跟踪关系”。我也觉得 this post 描述了与我们类似的场景;然而,最流行的答案中描述的 UX 流程与我们所拥有的不同,我猜是因为我们已经有一个远程存储库,只有特定的分支有问题。
我们了解 GIT 和增量版本控制的概念,但我们对其微妙之处知之甚少,以至于我害怕做一些不可逆转的事情。谁能确认我们走在正确的轨道上?
答案 0 :(得分:0)
进入 Team Explorer 的 Branches 面板,右键单击您的存储库并选择“Open Command Prompt”,然后键入:
<块引用>git branch -u origin/HotFix
这将使当前本地分支跟踪origin/HotFix
。
或者,
<块引用>git branch -u origin/HotFix LocalName
将使 LocalName
分支跟踪 origin/HotFix
。通常,建议将 LocalName
与其跟踪的上游分支 (upstream refers to the branch on the server) 同名。正如评论中所建议的,在 OP 案例中,这意味着 git branch -u origin/HotFix HotFix
。
在幕后,跟踪将导致 Git 在本地更新上游分支的克隆。然后 Git 可以将本地分支与服务器分支的这个本地副本进行比较。
然后可以拉取上游分支的提交。如果你已经在分支上提交了,而一些提交被其他人推送到服务器,那么在能够推送你自己的提交之前需要进行合并操作。
一些有趣的阅读:https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches