git pull:为什么需要一个特定的分支?

lan*_*ng2 0 git

所以我有一个git repo的克隆.当我做git拉起源

它告诉我:你要求从远程'起源'拉,但没有指定分支.因为这不是当前分支的默认配置远程,所以必须在命令行上指定分支.

我对推/拉的理解是它适用于整个回购,而不是特定于分支.例如,如果我有3个分支branch_a,branch_b和branch_c.我做'git pull branch_a'.我不会从其他两个分支机构进行更改吗?

Cha*_*nga 8

git pull 是以下组合:

git fetch
git merge
Run Code Online (Sandbox Code Playgroud)

哪里git fetch不需要分支规范,因为它只是将你的远程引用与原始仓库的相应头refs对齐(虽然它需要的是一个远程仓库规范"if"你有多个远程配置)

git merge绝对需要分支规范,因为你要求git将一些分支合并到当前签出的分支中

所以当你说git pull origin,你有效地要求git执行:

git fetch origin      // Where origin is treated as a remote repo specification
git merge origin      // Where origin is treated as a branch specification
Run Code Online (Sandbox Code Playgroud)

但很明显的git merge,origin不是一个有效的分支规范.