当前分支不跟踪远程分支
The current branch does not track a remote branch
我必须强调我对 GIT 的使用(通过 VS2019 Team Explorer)到目前为止是相当基础的:2 个用户,通常在 Master
分支上按顺序工作。很高兴有人建议阅读一些内容以更深入地介绍 GIT 的概念。
我们希望通过更业务化 的工作流程开始使用 GIT。想法是保留 Master
用于核心 updates/upgrades,并在发布迷你修补程序时根据过去的提交创建新分支:我们选择上次发布的提交,并基于创建新分支这个提交;让我们称之为 HotFix
。我们进行修复,commit/publish/push
,然后 merge
和 Master
.
所以我们才刚刚开始:昨天 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
首先,这需要 push
ing.. 这是一个陷阱 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
我必须强调我对 GIT 的使用(通过 VS2019 Team Explorer)到目前为止是相当基础的:2 个用户,通常在 Master
分支上按顺序工作。很高兴有人建议阅读一些内容以更深入地介绍 GIT 的概念。
我们希望通过更业务化 的工作流程开始使用 GIT。想法是保留 Master
用于核心 updates/upgrades,并在发布迷你修补程序时根据过去的提交创建新分支:我们选择上次发布的提交,并基于创建新分支这个提交;让我们称之为 HotFix
。我们进行修复,commit/publish/push
,然后 merge
和 Master
.
所以我们才刚刚开始:昨天 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
首先,这需要 push
ing.. 这是一个陷阱 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