How can I switch to another branch in git?

后端 未结 9 655
难免孤独
难免孤独 2021-01-29 17:38

Which one of these lines is correct?

git checkout \'another_branch\'

Or

git checkout origin \'another_branch\'
         


        
相关标签:
9条回答
  • 2021-01-29 18:09

    If another_branch already exists locally and you are not on this branch, then git checkout another_branch switches to the branch.

    If another_branch does not exist but origin/another_branch does, then git checkout another_branch is equivalent to git checkout -b another_branch origin/another_branch; git branch -u origin/another_branch. That's to create another_branch from origin/another_branch and set origin/another_branch as the upstream of another_branch.

    If neither exists, git checkout another_branch returns error.

    git checkout origin another_branch returns error in most cases. If origin is a revision and another_branch is a file, then it checks out the file of that revision but most probably that's not what you expect. origin is mostly used in git fetch, git pull and git push as a remote, an alias of the url to the remote repository.

    git checkout origin/another_branch succeeds if origin/another_branch exists. It leads to be in detached HEAD state, not on any branch. If you make new commits, the new commits are not reachable from any existing branches and none of the branches will be updated.

    UPDATE:

    As 2.23.0 has been released, with it we can also use git switch to create and switch branches.

    If foo exists, try to switch to foo:

    git switch foo
    

    If foo does not exist and origin/foo exists, try to create foo from origin/foo and then switch to foo:

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

    More generally, if foo does not exist, try to create foo from a known ref or commit and then switch to foo:

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

    If we maintain a repository in Gitlab and Github at the same time, the local repository may have two remotes, for example, origin for Gitlab and github for Github. In this case the repository has origin/foo and github/foo. git switch foo will complain fatal: invalid reference: foo, because it does not known from which ref, origin/foo or github/foo, to create foo. We need to specify it with git switch -c foo origin/foo or git switch -c foo github/foo according to the need. If we want to create branches from both remote branches, it's better to use distinguishing names for the new branches:

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

    If foo exists, try to recreate/force-create foo from (or reset foo to) a known ref or commit and then switch to foo:

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

    which are equivalent to:

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

    Try to switch to a detached HEAD of a known ref or commit:

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

    If you just want to create a branch but not switch to it, use git branch instead. Try to create a branch from a known ref or commit:

    git branch foo <ref>
    git branch foo <commit>
    
    0 讨论(0)
  • 2021-01-29 18:17

    I am using this to switch one branch to another anyone you can use it works for me like charm.

    git switch [branchName] OR git checkout [branchName]

    ex: git switch develop OR
    git checkout develop

    0 讨论(0)
  • 2021-01-29 18:22

    What worked for me is the following:

    Switch to the needed branch:

    git checkout -b BranchName
    

    And then I pulled the "master" by:

    git pull origin master
    
    0 讨论(0)
  • 2021-01-29 18:24

    Check : git branch -a

    If you are getting only one branch. Then do below steps.

    • Step 1 : git config --list
    • Step 2 : git config --unset remote.origin.fetch
    • Step 3 : git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
    0 讨论(0)
  • 2021-01-29 18:26

    Switching to another branch in git. Straightforward answer,

    git-checkout - Switch branches or restore working tree files

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

    Before switching the branch make sure you don't have any modified files, in that case, you can commit the changes or you can stash it.

    0 讨论(0)
  • 2021-01-29 18:26

    Useful commands to work in daily life:

    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
    

    If you want to merge to dev from feature branch, First check out dev branch with command "git branch dev/develop" Then enter merge commadn "git merge featurebranchname"

    0 讨论(0)
提交回复
热议问题