跟踪在GitHub上创建的新远程分支

MLi*_*ter 173 git github git-branch

我已经有一个本地主分支跟踪github项目的远程主分支.现在,我的一个合作者在同一个项目中创建了一个新分支,我想相应地做以下事情:

  1. 在本地创建一个新分支
  2. 使这个新分支跟踪新创建的远程分支.

我该怎么做呢?

max*_*max 242

git fetch
git branch --track branch-name origin/branch-name
Run Code Online (Sandbox Code Playgroud)

第一个命令确保您在本地存储库中具有远程分支.第二个命令创建跟踪远程分支的本地分支.它假定您的远程名称是origin和分支名称branch-name.

--track 对于远程分支,默认情况下启用选项,您可以省略它.

  • 如果只有一个具有该分支名称的远程分支,则可以执行`git checkout <branchname>`并且git将自动检出并设置跟踪分支.只想重申@Mark Longair在上述评论中所说的内容:http://stackoverflow.com/questions/11262703/how-to-track-a-new-remote-branch-created-on-github#comment14806580_11262703. (17认同)
  • 当我这样做时,我收到一个警告:refname'branch-name'是不明确的. (3认同)
  • 我不得不做`git fetch --all`,否则不会获取新的分支 (2认同)

小智 29

首先,您必须获取远程存储库:

git fetch remoteName
Run Code Online (Sandbox Code Playgroud)

您可以创建新分支并将其设置为跟踪所需的远程分支:

git checkout -b newLocalBranch remoteName/remoteBranch
Run Code Online (Sandbox Code Playgroud)

你也可以使用"git branch --track"而不是"git checkout -b"作为最大指定.

git branch --track newLocalBranch remoteName/remoteBranch
Run Code Online (Sandbox Code Playgroud)

  • 另外,正如[本评论](http://stackoverflow.com/questions/11262703/how-to-track-a-new-remote-branch-created-on-github#comment32122710_11262780)所指出的那样,如果你这样做的话`git checkout <branchname>`,并且有一个同名的远程分支(在你执行`git fetch`之后),然后本地分支将自动设置为跟踪远程分支. (5认同)

kot*_*ole 29

如果您没有现有的本地分支,那么它真的很简单:

git fetch
git checkout <remote-branch-name>
Run Code Online (Sandbox Code Playgroud)

例如,如果您获取并且有一个新的远程跟踪分支被调用origin/feature/Main_Page,请执行以下操作:

git checkout feature/Main_Page
Run Code Online (Sandbox Code Playgroud)

这将创建一个与远程分支同名的本地分支,跟踪该远程分支.如果您有多个具有相同分支名称的遥控器,则可以使用不那么模糊:

git checkout -t <remote>/<remote-branch-name>
Run Code Online (Sandbox Code Playgroud)

如果您已经创建了本地分支并且不想删除它,请参阅如何使现有Git分支跟踪远程分支?.

  • `git checkout 1.5-branch` (`remotes/upstream/1.5-branch` 在 `gitbranch -a` 的输出中)导致 `error: pathspec '1.5-branch' 与已知的任何文件不匹配git.` 将其更改为 `git checkoutupstream/1.5-branch` 会导致分离的 HEAD 并且不会创建本地分支。我认为这部分答案是完全错误的。这是 git 2.4.3 的情况 (2认同)
  • 再次澄清:我建议使用命令`git checkout feature-branch`。我不建议使用`git checkout origin / feature-branch`命令,正如你们俩都指出的那样,这将导致一个无用的分离头。 (2认同)

Ren*_*hle 8

当分支不是远程分支时,您可以将本地分支直接推送到远程分支.

git checkout master
git push origin master
Run Code Online (Sandbox Code Playgroud)

或者你有一个开发分支

git checkout dev
git push origin dev
Run Code Online (Sandbox Code Playgroud)

或者当远程分支存在时

git branch dev -t origin/dev
Run Code Online (Sandbox Code Playgroud)

有一些其他的posibilites推动远程分支.