代码之家  ›  专栏  ›  技术社区  ›  Benyamin Jafari

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

  •  342
  • Benyamin Jafari  · 技术社区  · 7 年前

    以下哪一行是正确的?

    git checkout 'another_branch'
    

    git checkout origin 'another_branch'
    

    git checkout origin/'another_branch'
    

    他们之间有什么不同?

    14 回复  |  直到 3 年前
        1
  •  344
  •   ElpieKay    5 年前

    如果 another_branch 本地已经存在,而您不在此分支上,那么 git checkout another_branch 切换到分支。

    如果 另一个分支 不存在,但 origin/another_branch 是的,那么 git签出另一个分支 相当于 git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch . 这是为了创造 另一个分支 从…起 并设置 原点/另一个分支 作为 另一个分支 .

    如果两者都不存在, git签出另一个分支 返回错误。

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

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

    更新 :

    由于2.23.0已经发布,我们也可以使用它 git switch 创建和切换分支。

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

    git switch foo
    

    如果 不存在并且 origin/foo 存在,请尝试创建 从…起 原点/foo 然后切换到 :

    git switch -c foo origin/foo
    # or simply
    git switch foo
    

    不存在,请尝试创建 从已知的ref或commit,然后切换到 :

    git switch -c foo <ref>
    git switch -c foo <commit>
    

    如果我们同时在Gitlab和Github中维护一个存储库,那么本地存储库可能有两个远程位置,例如, 起源 对于Gitlab和 github 对于Github。在这种情况下,存储库具有 原点/foo github/foo . git switch foo 会抱怨 fatal: invalid reference: foo ,因为它不知道来自哪个参考, 原点/foo github/foo ,以创建 . 我们需要用 git switch -c foo origin/foo git switch -c foo github/foo 根据需要。如果我们想从两个远程分支创建分支,最好为新分支使用不同的名称:

    git switch -c gitlab_foo origin/foo
    git switch -c github_foo github/foo
    

    如果 存在,尝试重新创建/强制创建 来自(或重置) to)已知的ref或commit,然后切换到 :

    git switch -C foo <ref>
    git switch -C foo <commit>
    

    相当于:

    git switch foo
    git reset [<ref>|<commit>] --hard
    

    尝试切换到已知ref或commit的分离头:

    git switch -d <ref>
    git switch -d <commit>
    

    如果您只想创建分支,但不想切换到它,请使用 git branch 相反尝试从已知引用或提交创建分支:

    git branch foo <ref>
    git branch foo <commit>
    
        2
  •  81
  •   danglingpointer Prasad    7 年前

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

    git签出-切换分支或还原工作树文件

    git fetch origin         <----this will fetch the branch
    git checkout branch_name <--- Switching the branch
    

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

        3
  •  32
  •   pola    4 年前

    日常工作中的有用命令:

    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
    

    如果要从功能分支合并到dev, 首先用命令签出dev branch“ git分行开发 " 然后输入merge commadn“ git合并功能BranchName "

        4
  •  21
  •   nnov    6 年前

    [ git checkout "branch_name" ]

    是另一种说法:

    [ git checkout -b branch_name origin/branch_name ]

    如果存在“branch_name” 只有 远程。

    [ git签出-b branch\u name原点/branch\u name ]在您有多个遥控器的情况下非常有用。

    关于[ git checkout origin 'another_branch' ]我不确定这是否可行,AFAK您可以使用“fetch”命令执行此操作 -- [ git fetch origin 'another_branch' ]

        5
  •  17
  •   gkw    5 年前

    具有 Git 2.23 以后,可以使用 git switch <branch name> 切换分支。

        6
  •  9
  •   Karam Qusai    5 年前

    对我起作用的是:

    切换到所需的分支:

    git checkout -b BranchName
    

    然后我把“大师”拉了过去:

    git pull origin master
    
        7
  •  5
  •   Tshilidzi Mudau Simon Müller    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/*
        8
  •  5
  •   Elijah Ayandokun    4 年前

    如果您想让分支跟踪远程分支,如果您要将更改提交到分支并拉取更改等,这一点非常重要,那么您需要添加一个 -t 对于这样的实际结账: git checkout -t branchname

        9
  •  2
  •   Rohit Chaurasiya    4 年前

    我用它把一个分支切换到另一个分支,任何人都可以使用,它对我来说很有魅力。

    git开关[branchName]或 git签出[branchName]

    例如:git交换机开发或
    git签出开发

        10
  •  2
  •   Valdemar Vreeman    3 年前

    要切换到带有更改的分支,您应该先进行提取。这是为了将更改保存为 包裹json 或者你的 .环境 文件夹

    因此:
    git fetch

    然后:
    git checkout <new branch>

    这个答案适用于那些像我一样在那里停留了一段时间的人。

        11
  •  1
  •   Meet Bhalodiya    3 年前

    只需一个命令就可以切换到git中的另一个分支。

    git switch branch-name

        12
  •  0
  •   Kulamani    3 年前

    检查远程分支列表:

    git branch -a
    

    切换到其他分支:

    git checkout -b <local branch name> <Remote branch name>
    Example: git checkout -b Dev_8.4 remotes/gerrit/Dev_8.4
    

    检查本地分支列表:

    git branch
    

    更新所有内容:

    git pull
    
        13
  •  0
  •   Singh Hrvoje    3 年前

    以下是我遵循的步骤:

    • git克隆{link}
    • cd{repo文件夹}

    您可以检查状态以及正在使用的分支:

    • git状态
    • git分行
    • 查看所有的分支

    如果“git branch”显示master,并且您希望创建并移动到另一个分支:

    • git签出-b{分支名称}

    使用“git branch”再次检查分支 它现在应该表明您在新的分支中。

    现在添加、提交和推送:

    • git添加。
    • git提交-m“添加了新分支”
    • git推送源{branch name}

    上述步骤适用于我在迁移到新的本地分支之前进行更改或在迁移到新分支之后进行更改的情况。 我希望它能帮助人们遇到类似的情况,也能解决这里提到的问题: Link

        14
  •  -1
  •   ahmed khan    3 年前

    更改分支的最佳命令

    git branch -M YOUR_BRANCH