- Git 入门
- Git - 首页
- Git - 版本控制
- Git - 基本概念
- Git - 命令行
- Git - 安装
- Git - 首次设置
- Git - 基本命令
- Git - 获取帮助
- Git - 工具
- Git - 速查表
- Git - 术语
- Git 分支
- Git - 简述分支
- Git - 创建新分支
- Git - 切换分支
- Git - 分支与合并
- Git - 合并冲突
- Git - 管理分支
- Git - 分支工作流程
- Git - 远程分支
- Git - 跟踪分支
- Git - 变基
- Git - 变基与合并
- Git - 合并提交
- Git 操作
- Git - 克隆操作
- Git - 标签操作
- Git - 别名操作
- Git - 提交操作
- Git - 暂存操作
- Git - 移动操作
- Git - 重命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修补操作
- Git - 差异操作
- Git - 状态操作
- Git - 日志操作
- Git - HEAD 操作
- Git - origin master
- Git 撤销
- Git - 撤销更改
- Git - Checkout
- Git - 恢复
- Git - 重置
- Git - 恢复操作
- Git - Rm
- Git - 切换操作
- Git - Cherry-pick
- Git - Amend
- Git 在服务器上
- Git - 本地协议
- Git - 智能 HTTP 协议
- Git - 哑 HTTP 协议
- Git - SSH 协议
- Git - Git 协议
- Git - 在服务器上获取 Git
- Git - 设置服务器
- Git - 守护进程
- Git - GitWeb
- Git - GitLab
- Git - 第三方托管选项
- 分布式 Git
- Git - 分布式工作流程
- Git - 为项目做贡献
- Git - 维护项目
- 自定义 Git
- Git - 配置
- Git - 钩子
- Git - 属性
- Git - Init
- Git - Commit
Git - 分支跟踪
在 Git 中,**跟踪分支** 是一个本地分支,它被设置为跟踪远程仓库中的一个分支的状态。当本地分支跟踪远程分支时,Git 允许您轻松同步这两个分支。
使用简单的命令,如 **git pull** 和 **git push**,可以从远程分支获取更改或将您的更改发送到远程分支,而无需每次都显式指定远程分支。
当一个分支跟踪远程分支时,Git 还会告知您您的本地分支是在远程分支之前还是之后。这使得更容易管理更改流程并维护最新的代码库。
分支跟踪的工作原理
当您第一次将本地分支推送到远程仓库时,Git 会自动在本地分支和远程分支之间建立跟踪关系。远程分支通常称为 **origin/branch-name**,其中 **origin** 是远程仓库的默认别名。
例如
您在本地机器上创建一个名为 **feature-branch** 的新分支。
您使用 **git push origin feature-branch** 将此分支推送到远程仓库。
Git 将 **feature-branch** 设置为跟踪 **origin/feature-branch**。
从这一点开始,Git 知道本地机器上的 **feature-branch** 对应于远程仓库上的 **origin/feature-branch**。
设置跟踪分支
在创建新的本地分支时,或者当我们想要在现有本地分支和远程分支之间建立关系时,我们可以显式地设置分支跟踪。让我们看看如何在不同的场景中设置跟踪分支
创建新的跟踪分支
在创建新分支时,我们可以使用 **-u** 或 **--set-upstream-to** 选项与 **git branch** 或 **git checkout** 命令一起使用,将其设置为跟踪远程分支。
git checkout -b feature-branch git push -u origin feature-branch
在此示例中
**-b** 选项创建一个名为 **feature-branch** 的新分支。
使用 **git push** 的 **-u** 选项将 **feature-branch** 设置为跟踪 **origin/feature-branch**。
从这一点开始,**git pull** 和 **git push** 将自动同步本地和远程分支之间的更改。
跟踪现有分支
要设置现有分支与远程分支之间的跟踪关系,可以使用以下命令
git branch --set-upstream-to=origin/feature-branch feature-branch
这会在本地 **feature-branch** 和远程分支 **origin/feature-branch** 之间建立跟踪关系。现在,我们可以轻松地拉取和推送更改,而无需每次都指定远程分支。
克隆仓库并跟踪分支
当您使用 **git clone** 克隆远程仓库时,Git 会自动为默认分支(通常为 **main** 或 **master**)设置跟踪。例如,克隆仓库后,本地 **main** 分支将自动跟踪 **origin/main**。
git clone https://github.com/user/repository.git
检查分支跟踪状态
我们可以使用几个 Git 命令查看本地和远程分支之间当前的跟踪关系。
查看所有分支及其跟踪状态
要查看哪些本地分支正在跟踪远程分支,以及它们的同步状态,请在 **git branch** 命令中使用 **-vv** 选项
git branch -vv
此命令列出所有本地分支,并显示它们正在跟踪哪个远程分支。它还指示分支是在远程分支之前还是之后。例如,我们可能会看到如下输出
* main 123abc [origin/main: behind 2] Latest commit message feature-branch 456def [origin/feature-branch: ahead 1] Another commit message
此输出告诉您
main 分支落后于 **origin/main** 两个提交。
**feature-branch** 比 **origin/feature-branch** 超前一个提交。
查看特定分支的跟踪状态
要检查特定分支是否正在跟踪远程分支,请使用以下命令
git status
Git 将显示一条消息,指示您的分支是否正在跟踪远程分支,以及它是在之前、之后还是最新状态。
与跟踪分支同步
一旦分支跟踪远程分支,Git 就可以轻松地使用 **git pull** 和 **git push** 命令同步这两个分支之间的更改
排查分支跟踪问题
在使用跟踪分支时,可能会遇到一些常见问题,但通常很容易解决。
错误:没有跟踪信息
如果我们尝试在未设置为跟踪远程分支的分支上运行 **git pull** 或 **git push**,我们可能会看到类似这样的错误
fatal: The current branch feature-branch has no upstream branch.
要解决此问题,我们可以使用 **--set-upstream-to** 选项设置上游分支
git branch --set-upstream-to=origin/feature-branch
或者,我们可以在首次推送时使用 **-u** 选项设置上游分支
git push -u origin feature-branch
之前/之后状态
如果 Git 告诉我们该分支“之前”或“之后”远程分支,则表示一个分支中有一些提交,而另一个分支中没有。我们可以通过运行 **git pull** 来获取和合并来自远程分支的更改或 **git push** 来将您的本地提交上传到远程分支来解决此问题。