Pat*_*otz 3437 git branch git-branch
我知道如何创建一个跟踪远程分支的新分支,但是如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config文件,但似乎应该有一个更简单的方法.
Dan*_*ing 4171
给定分支foo和远程upstream:
从Git 1.8.0开始:
git branch -u upstream/foo
Run Code Online (Sandbox Code Playgroud)
或者,如果本地分支foo不是当前分支:
git branch -u upstream/foo foo
Run Code Online (Sandbox Code Playgroud)
或者,如果您想键入更长的命令,这些命令等同于以上两个:
git branch --set-upstream-to=upstream/foo
git branch --set-upstream-to=upstream/foo foo
Run Code Online (Sandbox Code Playgroud)
从Git 1.7.0开始:
git branch --set-upstream foo upstream/foo
Run Code Online (Sandbox Code Playgroud)
笔记:
foo分支foo从远程跟踪远程分支upstream. git fetch upstream预先运行.另请参阅:为什么我需要始终执行`--set-upstream`?
Pau*_*rly 232
您可以执行以下操作(假设您已在主服务器上签出并希望推送到远程分支主服务器):
如果您还没有设置'遥控',请设置它
git remote add origin ssh://...
Run Code Online (Sandbox Code Playgroud)
现在配置master来知道跟踪:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
Run Code Online (Sandbox Code Playgroud)
并推:
git push origin master
Run Code Online (Sandbox Code Playgroud)
Gre*_*con 157
我这样做是为了推动使用-u选项的副作用
$ git push -u origin branch-name
Run Code Online (Sandbox Code Playgroud)
相当长的选项是--set-upstream.
该git-branch命令也理解--set-upstream,但它的使用可能会令人困惑.版本1.8.0修改了界面.
git branch --set-upstream已被弃用,可能会在相对较远的将来被删除.git branch [-u|--set-upstream-to]已经引入了一个更健全的论点....
这很诱人
git branch --set-upstream origin/master,但这告诉Git安排本地分支"origin/master"与当前签出的分支集成,这是用户意味着的极不可能.该选项已弃用; 使用新的--set-upstream-to(带有短而甜-u)选项.
假设您有一个本地foo分支,并希望它以与其上游相同的名称处理分支.用这个来实现
$ git branch foo
$ git branch --set-upstream-to=origin/foo
Run Code Online (Sandbox Code Playgroud)
要不就
$ git branch --set-upstream-to=origin/foo foo
Run Code Online (Sandbox Code Playgroud)
Jam*_*ead 53
您可能会发现该git_remote_branch工具很有用.它提供了用于创建,发布,删除,跟踪和重命名远程分支的简单命令.一个很好的功能是你可以请求一个grb命令来解释它将执行什么git命令.
grb explain create my_branch github
# git_remote_branch version 0.3.0
# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch
Run Code Online (Sandbox Code Playgroud)
Hed*_*hog 52
实际上,对于已接受的工作答案:
git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa
Run Code Online (Sandbox Code Playgroud)
小智 43
我相信,早在Git 1.5.x你可以让本地分支$BRANCH跟踪一个远程分支origin/$BRANCH,就像这样.
鉴于$BRANCH并且origin/$BRANCH存在,并且您当前没有签出$BRANCH(如果有,请切换),执行:
git branch -f --track $BRANCH origin/$BRANCH
Run Code Online (Sandbox Code Playgroud)
这将重新创建$BRANCH为跟踪分支.-f尽管$BRANCH已经存在,但创造的力量.--track如果通常的默认值就位(即git-config参数branch.autosetupmerge为true),则是可选的.
请注意,如果origin/$BRANCH尚不存在,您可以通过将本地推$BRANCH送到远程存储库来创建它:
git push origin $BRANCH
Run Code Online (Sandbox Code Playgroud)
接下来是上一个命令,将本地分支推进到跟踪分支.
Mon*_*SSI 34
1-使用以下命令更新本地元数据:git fetch --all
2-使用:git branch -a显示您的远程和本地分支 ,请参阅以下屏幕截图
3-切换到目标分支,即要与远程链接:使用
git checkout branchName
例如:
4-使用以下方法将本地分支链接到远程分支:
git branch --set-upstream-to nameOfRemoteBranch
注意:nameOfRemoteBranch:从步骤2"git branch -r"的输出中复制
使用示例:
rom*_*nlv 23
确保你运行:
git config push.default tracking
Run Code Online (Sandbox Code Playgroud)
能够推动无故障
mip*_*adi 22
编辑.git/config可能是最简单,最快捷的方式.无论如何,这就是用于处理远程分支的Git命令正在做的事情.
如果您不想手工处理文件(并且这并不难),您可以随时使用git config它......但是.git/config,无论如何,这只是编辑文件.
当然,有一些方法可以在使用时自动跟踪远程分支git checkout(--track例如,通过传递标志),但这些命令适用于新分支,而不是现有分支.
Mad*_*Nik 17
很短的
git branch --set-upstream yourLocalBranchName origin/develop
Run Code Online (Sandbox Code Playgroud)
这将使您的yourLocalBranchName跟踪调用远程分支develop.
wik*_*wik 15
对于1.6.x,可以使用git_remote_branch工具完成:
grb track foo upstream
Run Code Online (Sandbox Code Playgroud)
这将导致Git进行foo跟踪upstream/foo.
yra*_*lik 10
我使用以下命令(假设您的本地分支名称是"branch-name-local",远程分支名称是"branch-name-remote"):
$ git branch --set-upstream-to=origin/branch-name-remote branch-name-local
Run Code Online (Sandbox Code Playgroud)
如果本地和远程分支具有相同的名称,则只需执行以下操作:
$ git branch --set-upstream-to=origin/branch-name branch-name
Run Code Online (Sandbox Code Playgroud)
在这里,使用github和git version 2.1.4,只是做:
$ git clone git@github.com:user/repo.git
Run Code Online (Sandbox Code Playgroud)
而且遥控器来自itelsef,即使没有在本地链接:
$ git remote show origin
* remote origin
Fetch URL: git@github.com:user/repo.git
Push URL: git@github.com:user/repo.git
HEAD branch: master
Remote branches:
develop tracked <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
Run Code Online (Sandbox Code Playgroud)
但当然,仍然没有本地分支:
$ git branch
* master <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Run Code Online (Sandbox Code Playgroud)
看到?现在,如果您只是结帐develp,它将自动执行魔术:
$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'
Run Code Online (Sandbox Code Playgroud)
太简单!
摘要.只需运行以下两个命令:
$ git clone git@github.com:user/repo.git
$ git checkout develop
Run Code Online (Sandbox Code Playgroud)
之后git pull:
git checkout --track <remote-branch-name>
要么:
git fetch && git checkout <branch-name>
要创建新分支,我们可以使用以下命令
git checkout --track -b example origin/example对于已经创建的分支来创建远程之间的链接然后从该分支使用下面的命令
git branch -u origin/remote-branch-name
如果运行后出现“错误:请求的上游分支 'origin/foo' 不存在” :
git branch -u origin/foo
Run Code Online (Sandbox Code Playgroud)
确保确实origin有foo分支机构。
确保remote.origin.fetch变量设置为+refs/heads/*:refs/remotes/origin/*:
git branch -u origin/foo
Run Code Online (Sandbox Code Playgroud)
git fetch -v。你应该看到 git 更新自origin/foo:$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)
git branch -avv将显示方括号,表示跟踪的远程分支:$ git fetch -v
From github.com:davidhcefx/test
* [new branch] foo -> origin/foo
= [up to date] master -> origin/master
Run Code Online (Sandbox Code Playgroud)
小智 6
对于 git version 2.25.1,使用命令:
git push --set-upstream origin <local_branch_name>
Run Code Online (Sandbox Code Playgroud)
以某种相关的方式,我试图将远程跟踪分支添加到现有分支,但无法访问我想添加该远程跟踪分支的系统上的远程存储库(因为我经常导出该分支的副本)通过sneakernet repo 到另一个有权推送到该远程的系统)。我发现没有办法强制在本地添加一个还没有被获取的远程分支(所以本地不知道远程上存在该分支,我会得到错误:)the requested upstream branch 'origin/remotebranchname' does not exist。
最后,我设法添加了一个新的、以前未知的远程分支(没有获取),方法是添加一个新的头文件 at.git/refs/remotes/origin/remotebranchname然后复制 ref(眼球是最快的,因为它是蹩脚的 ;-) 从可以访问源的系统repo 到工作站(使用我在其中添加远程分支的本地 repo)。
一旦完成,我就可以使用 git branch --set-upstream-to=origin/remotebranchname
这不是此问题的直接答案,但我想在这里给任何人在尝试配置上游分支机构时可能遇到与我相同的问题做个说明。
注意push.default。
在较旧的git版本中,默认设置为match,如果您使用git,则会导致非常不理想的行为,例如:
本地分支“母版”跟踪到原始/母版
远程分支“上游”跟踪到上游/主服务器
如果您在“上游”分支上尝试“ git push”,则使用push.default匹配的 git会自动尝试将本地分支“ master”合并到“ upstream / master”,从而造成很多混乱。
这会提供更多理智的行为:
git config --global push.default上游
| 归档时间: |
|
| 查看次数: |
1285784 次 |
| 最近记录: |