Git pull origin <branch>会覆盖master吗?

Jef*_*eff 12 git github remote-branch git-branch

我在Github上有一个存储库,aav1

在我的笔记本电脑上,我有两个分支,一个名为master,一个名为vs12up .主分支是当软件是Visual Studio 2008时,vs12up转换为Visual Studio 2012.

在我的笔记本电脑上一切似乎都很好,我把新分支推到github,看起来是正确的.

在我的桌面上,我试图拉远程分支:

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

它在桌面上将更改写入我的主分支,git log显示在vs12up分支上进行的提交,但git分支仅显示master,这是当前分支.

如何将更改还原到分支并拉出桌面上的vs12up分支以匹配笔记本电脑上的存储库?

ear*_*arl 37

如果git pull使用远程分支名称执行操作,它将获取远程分支,然后将其合并到当前本地分支中.因此,要撤消该操作,首先必须将本地分支重置为远程master,然后vs12up从相应的远程分支创建新的本地分支.

  1. 重置本地master以匹配远程存储库master(警告:在发出以下命令之前,请确保您没有要保留的任何未提交的更改):

    git reset --hard origin/master
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将所有远程分支获取到本地存储库:

    git fetch origin
    
    Run Code Online (Sandbox Code Playgroud)
  3. vsup12从远程vsup12分支创建一个新的本地分支,并切换到这个新的本地分支:

    git checkout -b vsup12 origin/vsup12
    
    Run Code Online (Sandbox Code Playgroud)

请注意,当您稍后git pull切换到vsup12分支时,您将从vsup12Github上的分支获取并合并最新更改到您的本地vsup12

  • `-b`指定新分支的名称.`git checkout -b foo`是创建一个名为`foo`的分支(带有`git branch foo`)然后切换到它(使用`git checkout foo`)的简写. (3认同)