首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在git中切换到另一个分支?

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

Stack Overflow用户
提问于 2017-12-04 18:11:49
回答 11查看 577.7K关注 0票数 319

下面哪一行是正确的?

代码语言:js
复制
git checkout 'another_branch'

或者

代码语言:js
复制
git checkout origin 'another_branch'

或者

代码语言:js
复制
git checkout origin/'another_branch'

它们之间的区别是什么?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2017-12-04 18:26:03

如果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_branch来自origin/another_branch并设置origin/another_branch作为上游的another_branch

如果两者都不存在,git checkout another_branch返回错误。

git checkout origin another_branch大多数情况下会返回错误。如果origin是一个修订版,another_branch是一个文件,然后它会签出该修订版的文件,但很可能这不是您所期望的。origin主要用于git fetchgit pullgit push作为远程,是指向远程存储库的url的别名。

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

更新

由于2.23.0已经发布,有了它,我们也可以使用git switch若要创建和切换分支,请执行以下操作。

如果foo存在,请尝试切换到foo

代码语言:js
复制
git switch foo

如果foo不存在并且origin/foo已存在,请尝试创建foo来自origin/foo然后切换到foo

代码语言:javascript
运行
复制
git switch -c foo origin/foo
# or simply
git switch foo

更一般地,如果foo不存在,请尝试创建foo从已知的引用或提交,然后切换到foo

代码语言:javascript
运行
复制
git switch -c foo 
git switch -c foo

如果我们同时在Gitlab和Github中维护一个存储库,则本地存储库可能有两个远程,例如,origin对于Gitlab和github为了Github。在这种情况下,存储库具有origin/foogithub/foo

git switch foo会抱怨fatal: invalid reference: foo,因为它不知道来自哪个ref,origin/foo或者github/foo,创建foo。我们需要用git switch -c foo origin/foo或者git switch -c foo github/foo根据需要。如果我们想要从两个远程分支创建分支,最好对新分支使用可区分的名称:

代码语言:javascript
运行
复制
git switch -c gitlab_foo origin/foo
git switch -c github_foo github/foo

如果foo存在,请尝试重新创建/force-createfoo从(或重置footo)已知的引用或提交,然后切换到foo

代码语言:javascript
运行
复制
git switch -C foo 
git switch -C foo

它们等同于:

代码语言:javascript
运行
复制
git switch foo
git reset [|] --hard

尝试切换到已知引用或提交的分离标头:

代码语言:javascript
运行
复制
git switch -d 
git switch -d

如果您只想创建一个分支,而不想切换到它,请使用git branch取而代之的是。尝试从已知的引用或提交创建分支:

代码语言:javascript
运行
复制
git branch foo 
git branch foo
票数 322
EN

Stack Overflow用户

发布于 2017-12-04 19:23:19

切换到git中的另一个分支。答案很简单,

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

代码语言:javascript
运行
复制
git fetch origin         <----this will fetch the branch
git checkout branch_name <--- Switching the branch

在切换分支之前,请确保您没有任何修改过的文件,在这种情况下,您可以提交更改,也可以将其隐藏起来。

票数 79
EN

Stack Overflow用户

发布于 2020-03-14 04:44:26

日常生活中有用的命令:

代码语言:javascript
运行
复制
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

如果您想要从feature分支合并到dev,请首先使用以下命令检查dev分支:git分支开发/开发“然后输入merge commadn”git合并功能分支名称“

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47630950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档