当前分支不跟踪远程分支

时间:2021-02-04 19:51:05

标签: git version-control

我必须强调,到目前为止,我对 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 ,这需要 pushing.. 这是第 22 种情况吗?

我读到 here$ git branch -u origin/dev 将建立“您当前 HEAD 分支的跟踪关系”。我也觉得 this post 描述了与我们类似的场景;然而,最流行的答案中描述的 UX 流程与我们所拥有的不同,我猜是因为我们已经有一个远程存储库,只有特定的分支有问题。

我们了解 GIT 和增量版本控制的概念,但我们对其微妙之处知之甚少,以至于我害怕做一些不可逆转的事情。谁能确认我们走在正确的轨道上?

1 个答案:

答案 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