当前分支不跟踪远程分支

The current branch does not track a remote branch

我必须强调我对 GIT 的使用(通过 VS2019 Team Explorer)到目前为止是相当基础的:2 个用户,通常在 Master 分支上按顺序工作。很高兴有人建议阅读一些内容以更深入地介绍 GIT 的概念。

我们希望通过更业务化 的工作流程开始使用 GIT。想法是保留 Master 用于核心 updates/upgrades,并在发布迷你修补程序时根据过去的提交创建新分支:我们选择上次发布的提交,并基于创建新分支这个提交;让我们称之为 HotFix。我们进行修复,commit/publish/push,然后 mergeMaster.

所以我们才刚刚开始:昨天 Mike 创建了 HotFix 分支,修复了一个错误,提交,发布更新,然后 push 将提交提交到远程。尚未完成与 Master 的合并。今天Bob开始Visual Studio,选择了HotFix分支,没有pull,开始着手解决第二个bug。现在他尝试 push,但 GIT 不高兴并说:

Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes before pushing again.

我们理解这是因为他在开始工作之前没有 pull,所以他比 Mike's/the Remote 的同一分支的版本晚了 1 次提交。当这种情况发生在 Master 上时,我们通常会在 pull 和 merge/resolve 上发生任何冲突,然后 push 进行工作。但是在这里,我们不能pull。还有一条消息说:

The current branch does not track a remote branch.

我们有点困惑,因为 VS 文档说你需要推送分支以便它跟踪远程,但我们不能 push 因为我们在远程之后有 1 个提交,应该 pull 首先,这需要 pushing.. 这是一个陷阱 22 的情况吗?

我读到 here that $ git branch -u origin/dev will make "a tracking relationship for your current HEAD branch". I also feel that this post 描述了一个与我们类似的场景;然而,最流行的答案中描述的用户体验流程与我们所拥有的不同,我猜是因为我们已经有了一个远程存储库,只有特定的分支有问题。

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

进入团队资源管理器的“分支”面板,右键单击您的存储库并选择“打开命令提示符”,然后键入:

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