要从远程 Git 仓库抓取分支并开始在本地处理,请在仓库中打开“终端”,从正确的远程仓库进行抓取,然后创建一个跟踪该远程分支的本地分支。例如,git fetch origin 紧接着 git switch --track origin/feature/login 即可创建并切换到与 origin/feature/login 关联的本地 feature/login 分支。
在仓库中打开“终端”
打开“终端”并进入包含你 Git 仓库的文件夹。在 macOS“终端”中,默认 shell 是 zsh,不过你的配置可能会使用其他 shell。下方的 Git 命令在两者中均可运行;包含 shell 元字符的分支名称应加引号,以免 shell 对其进行解释。Apple 的“终端”使用手册
如果你已经在代码编辑器中打开了该仓库,可直接使用其内置终端(如果可用)。否则,在“终端”中键入 cd ,将仓库文件夹从访达拖入“终端”窗口以插入其路径,然后按 Return 键。在切换分支之前,请确认你位于正确的仓库中并检查是否有任何本地更改:
git status --short
git remote -v
git remote -v 会列出已配置的远程名称和 URL。以下命令使用 origin(常见的远程名称);请将其替换为你 Mac 上显示的实际名称。如果未列出任何远程仓库,则说明此仓库当前没有可从中进行抓取的已配置远程仓库。
抓取远程分支
运行:
git fetch origin
抓取操作会从远程仓库下载提交和引用,并根据仓库的 fetch 配置更新本地的远程跟踪引用。它本身不会将你的工作目录切换到该分支。在通常的配置下,从 origin 抓取的分支会显示为类似 origin/feature/login 的名称。Git 文档将 fetch 描述为更新远程跟踪分支,确切的映射受远程仓库的 fetch refspec 控制。Git fetch 文档
你可以通过以下命令确认该分支在本地可见:
git branch --remotes
在输出中查找 origin/feature/login。如果未显示,请检查分支名称和远程仓库是否正确、你是否可以访问远程仓库,以及远程仓库的 fetch 配置是否包含该分支。如果仓库使用了受限制的 refspec,成功的抓取可能仍然不会显示服务器上的每一个分支。
创建并切换到本地跟踪分支
当远程跟踪分支存在,且你希望本地分支使用相同的名称时,请运行:
git switch --track origin/feature/login
Git 会创建一个本地 feature/login 分支,将其上游设置为 origin/feature/login,并将你的工作树切换到该分支。这种跟踪关系允许 git status 等命令报告本地分支与其上游相比的状态,并为 git pull 等操作提供默认上游。--track 选项用于设置该上游;Git 在这种形式下会直接从远程跟踪分支派生出本地名称。Git switch 文档
如果你希望使用不同的本地分支名称,请显式指定:
git switch --track --create login-work origin/feature/login
这将创建跟踪 origin/feature/login 的本地 login-work 分支。在支持较新 switch 命令的 Git 版本中,--create 是 -c 的完整形式。如果 Git 报告 switch 为未知命令,请通过 git --version 检查已安装的版本;git switch 是在 Git 2.23 中引入的。在这种情况下,请使用旧版的对应命令:
git checkout --track -b login-work origin/feature/login
验证分支并处理常见错误
切换后,确认当前活动分支和跟踪状态:
git status -sb
git branch -vv
状态输出应指明本地分支及其上游。在分支列表中,login-work 应将 origin/feature/login 显示为其跟踪分支。
如果 Git 提示分支存在歧义,请使用上面显示的完全指定格式 remote/branch,而不要依赖自动推断。当恰好只有一个远程仓库具有匹配分支时,Git 的简写命令 git switch feature/login 可以自动创建跟踪分支,但当多个远程仓库都包含该名称时就会产生歧义。Git switch 文档
如果因本地更改会被覆盖而拒绝切换,请在继续之前停下来检查 git status。提交或安全暂存你想保留的工作;除非你清楚会丢失什么,否则不要强制切换或丢弃更改。如果本地分支名称已存在,请慎重选择该分支,或使用 --create 指定一个不同的本地名称;不要假定已存在的分支必然跟踪了你预期的远程分支。
当检出了预期的本地分支且其上游指向预期的远程分支时,工作流程即告完成。抓取操作会刷新本地仓库对远程状态的了解;创建跟踪分支则为你提供了一个本地工作空间,同时保留了与远程的连接。
来源
Git - git-fetch 文档 — Git
Git - git-switch 文档 — Git
在 Mac 上的“终端”中更改默认 Shell — Apple 支持