我已经建立了一个本地主分支跟踪 Github 项目的远程主分支。现在,我的协作者在同一项目中创建了一个新的分支,我想做以下操作:
- 在本地创建一个新的分支
- 使这个新分支跟踪新创建的远程分支。
我应该如何正确地执行这些操作?
我已经建立了一个本地主分支跟踪 Github 项目的远程主分支。现在,我的协作者在同一项目中创建了一个新的分支,我想做以下操作:
我应该如何正确地执行这些操作?
git fetch
git branch --track branch-name origin/branch-name
第一条命令确保你在本地仓库有远程分支。第二条命令创建一个本地分支并追踪远程分支。它默认假设你的远程名称是origin
,分支名称是branch-name
。
--track
选项对于远程分支是启用的,你可以省略它。
git checkout <branchname>
,Git将自动检出并设置跟踪分支。我想重申@Mark Longair在此评论中提到的内容:https://dev59.com/E2gu5IYBdhLWcg3winc3#1qKdEYcBWogLw_1b3VQY。 - Ryan Wallsgit fetch --all
,否则新的分支将无法被获取。 - mschrimpfcompany_remote
),我必须先通过 git fetch company_remote
从该远程仓库获取。 - Zephaniah Grunschlaggit fetch --all
或者 git fetch <specific_remote>
而不是仅仅的 git fetch
,因为看起来 git fetch
并没有做任何事情:新创建的远程不会被获取,这可以通过 git branch -a -v
查看。 - Nils Lindemann如果您没有现有的本地分支,那么它真的很简单:
git fetch
git checkout <remote-branch-name>
origin/feature/Main_Page
的新的远程跟踪分支,只需执行以下操作:git checkout feature/Main_Page
这将创建一个与远程分支同名的本地分支,跟踪该远程分支。如果您有多个具有相同分支名称的远程分支,则可以使用以下方法来消除歧义:
git checkout -t <remote>/<remote-branch-name>
git checkout 1.5-branch
(remotes/upstream/1.5-branch
在 git branch -a
的输出中)会导致错误:error: pathspec '1.5-branch' did not match any file(s) known to git.
将其更改为 git checkout upstream/1.5-branch
会导致分离 HEAD 并且不会创建本地分支。我认为这部分答案是错误的。这是使用 git 2.4.3 版本。 - Piotr Dobrogost<remote>/<branch>
的分支。远程跟踪分支是只读的,表示该分支在上次获取时在远程的位置。在该分支ref上调用checkout
会将您置于分离的HEAD模式中,就像Piotr所说的那样。请注意,指定要获取的远程分支可避免创建不需要的远程跟踪分支。 - scannygit checkout feature-branch
。我并不建议使用命令git checkout origin/feature-branch
,正如你们两个指出的那样,这将导致一个无用的分离头。 - kotoolegit branch -r
命令列出所有分支,包括当前仅存在于远程的分支,以确保分支已被获取。然后进行检出操作。 - Teddy首先,您需要获取远程仓库:
git fetch remoteName
你可以创建一个新分支,并将其设置为追踪想要的远程分支:
git checkout -b newLocalBranch remoteName/remoteBranch
你也可以使用 "git branch --track" 代替 max 指定的 "git checkout -b"。
git branch --track newLocalBranch remoteName/remoteBranch
checkout -b
,那么使用 --track
实际上是不必要的。 - user456814git checkout <分支名>
命令,并且在您运行了 git fetch
后存在一个同名的远程分支,则本地分支将自动设置为跟踪远程分支。 - user456814git checkout master
git push origin master
或者当你有一个开发分支时
git checkout dev
git push origin dev
或者当远程分支存在时
git branch dev -t origin/dev
git fetch
git branch -r
git log --oneline --all --graph
git branch branch_name origin/remote_branch_name
git branch
来查看你的日志历史。我总是用这种方式:
git fetch
那么:
git checkout -b branchName origin/branchName
git checkout master
git pull origin master
git checkout -b new-branch-name
//Set up tracking for the new local branch to the collaborator's remote branch:
git push -u origin new-branch-name
<whatever>
结尾的远程跟踪分支,你甚至可以只运行git checkout <whatever>
命令,Git会自动猜测你的意图。或者直接运行git checkout -t <remote>/<whatever>
命令。 - Mark Longair