如何在git中切换到另一个分支?

Ben*_*ari 163 git version-control github git-checkout gitlab

这些线中哪一条是正确的?

git checkout 'another_branch'
Run Code Online (Sandbox Code Playgroud)

要么

git checkout origin 'another_branch'
Run Code Online (Sandbox Code Playgroud)

要么

git checkout origin/'another_branch'
Run Code Online (Sandbox Code Playgroud)

这些线之间有什么区别?


Elp*_*Kay 163

如果another_branch已在本地存在且您不在此分支上,则git checkout another_branch切换到分支.

如果another_branch不存在但origin/another_branch确实存在,则git checkout another_branch相当于git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch.这是创建another_branchorigin/another_branch,并设置origin/another_branch为上游another_branch.

如果两者都不存在则git checkout another_branch返回错误.

git checkout origin another_branch在大多数情况下返回错误.如果origin是修订版并且another_branch是文件,那么它会检出该修订版的文件,但很可能不是您所期望的.origin主要用于在git fetch,git pullgit push作为远程链接到远程存储库的一个别名.

git checkout origin/another_branch如果origin/another_branch存在则成功.它导致处于分离的HEAD状态,而不是任何分支.如果进行新提交,则无法从任何现有分支访问新提交,并且不会更新任何分支.

  • 这个答案是正确的(像往常一样,也没有投票),但我会添加一个评论,*可能*有用:在我看来,`git checkout`命令做了太多事情.这就是为什么这里有这么多的操作模式.如果`git checkout`唯一做的就是*switch*branches,答案很简单,但它也可以*创建*分支,甚至从特定提交中提取文件*而不用*切换分支. (18认同)
  • 这是正确的答案,但显示git是如何在命令行中搞砸的.git checkout切换分支? (9认同)
  • @thang好吧,在2.23.0版本中,这已得到纠正:您现在可以使用`git switch`切换到分支。 (2认同)
  • @John 使用 `git checkout` 代替旧版本,这也适用于现代版本。 (2认同)

dan*_*ter 55

切换到git中的另一个分支.直截了当的回答,

git-checkout - 切换分支或恢复工作树文件

git fetch origin         <----this will fetch the branch
git checkout branch_name <--- Switching the branch
Run Code Online (Sandbox Code Playgroud)

在切换分支之前,请确保您没有任何已修改的文件,在这种情况下,您可以提交更改,也可以将其存储.

  • 尚未提取您尝试签出的分支,那么您需要在签出之前提取。如果分支是最新的,则可以跳过获取,然后仅使用git checkout分支名称即可。 (2认同)

pol*_*ola 20

日常生活中有用的命令:

git checkout -b "branchname" ->  creates new branch
git branch                   ->  lists all branches
git checkout "branchname"    ->  switches to your branch
git push origin "branchname" ->  Pushes to your branch
git add */filename           -> Stages *(All files) or by given file name
git commit -m "commit message" -> Commits staged files
git push                     -> Pushes to your current branch
Run Code Online (Sandbox Code Playgroud)

如果你想从功能分支合并到开发,首先使用命令“ git branch dev/develop ”检查开发分支,然后输入合并命令“ git merge featurebranchname


gkw*_*gkw 15

Git 2.23开始,可以使用git switch <branch name>切换分支。

  • 天啊,这是一个游戏规则的改变者。稍微相关的是,您可以使用“git Restore”来执行签出对文件所做的操作。 (2认同)

小智 13

[ git checkout "branch_name"]

是另一种说法:

[ git checkout -b branch_name origin/branch_name]

如果"branch_name" 只是远程存在.

git checkout -b branch_name origin/branch_name如果您有多个遥控器,[ ]非常有用.

关于[ git checkout origin 'another_branch']我不确定这是可能的,AFAK你可以使用"fetch"命令 - [ git fetch origin 'another_branch'] 来做到这一点


Kar*_*sai 7

对我有用的是以下内容:

切换到需要的分支:

git checkout -b BranchName
Run Code Online (Sandbox Code Playgroud)

然后我通过以下方式拉了“主人”:

git pull origin master
Run Code Online (Sandbox Code Playgroud)


小智 6

查看:git branch -a

如果您只有一个分支,请执行以下步骤。

  • 步骤1 :git config --list
  • 第2步 :git config --unset remote.origin.fetch
  • 步骤3:git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*

  • 我想知道这一系列命令如何切换到另一个分支。 (2认同)

小智 5

如果您希望分支跟踪远程分支,如果您要提交对分支的更改并拉取更改等,这一点非常重要,您需要-t为实际结帐添加一个,如下所示: git checkout -t branchname


Val*_*man 5

要切换到包含更改的分支,您应该首先执行提取。这是为了保存更改,例如您的package.json.env文件。

所以:

git fetch

进而:

git checkout <new branch>

这个答案是为那些像我一样被困了一段时间的人准备的。