让现有的Git分支跟踪一个远程分支?
我知道如何创建一个跟踪远程分支的新分支,但是如何使现有分支跟踪远程分支?
我知道我可以编辑.git/config
文件,但似乎应该有一个更简单的方法。
#1楼
我这样做是为了使用-u
选项推送的副作用
$ git push -u origin branch-name
等效的长选项是--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
(使用short-and-sweet-u
)选项。
假设您有一个本地foo
分支,并希望它以与其上游相同的名称处理分支。 用这个来实现
$ git branch foo
$ git branch --set-upstream-to=origin/foo
要不就
$ git branch --set-upstream-to=origin/foo foo
#2楼
很短的
git branch --set-upstream yourLocalBranchName origin/develop
这将使yourLocalBranchName
跟踪名为develop
的远程分支。
#3楼
给定分支foo
和远程upstream
:
从Git 1.8.0开始:
git branch -u upstream/foo
或者,如果本地分支foo
不是当前分支:
git branch -u upstream/foo foo
或者,如果您想键入更长的命令,这些命令等同于以上两个:
git branch --set-upstream-to=upstream/foogit branch --set-upstream-to=upstream/foo foo
从Git 1.7.0开始:
git branch --set-upstream foo upstream/foo
笔记:
- 以上所有的命令都将引起局部分支
foo
跟踪远程分支foo
从远程upstream
。 - 不推荐使用旧的(1.7.x)语法,而采用新的(1.8+)语法。 新语法旨在更直观,更易于记忆。
- 使用尚未获取的新创建的遥控器定义上游将失败。 在那种情况下,事先运行
git fetch upstream
。
另请参阅: 为什么我需要始终执行`--set-upstream`?
#4楼
对于1.6.x,可以使用git_remote_branch工具完成:
grb track foo upstream
这将导致Git使foo
跟踪upstream/foo
。
#5楼
我以某种相关的方式尝试将远程跟踪分支添加到现有分支,但是无法访问我想在其上添加远程跟踪分支的系统上的远程存储库(因为我经常导出此副本通过sneakernet回复到另一个可以推送到该遥控器的系统。 我发现没有办法强制在尚未获取的本地上添加远程分支(因此本地不知道远程分支存在,我会得到错误: the requested upstream branch 'origin/remotebranchname' does not exist
)。
最后,我设法通过在.git/refs/remotes/origin/remotebranchname
添加一个新的头文件来添加新的,以前未知的远程分支(没有提取),然后复制ref(眼球是最快的,蹩脚的; - )从可以访问原始仓库的系统到工作站(使用我在其中添加远程分支的本地仓库)。
一旦完成,我就可以使用git branch --set-upstream-to=origin/remotebranchname
#6楼
我相信,早在Git 1.5.x你就可以建立一个本地分支$BRANCH
跟踪远程分支origin/$BRANCH
,就像这样。
鉴于$BRANCH
和origin/$BRANCH
存在,并且您目前没有签出$BRANCH
(如果有的话,请切换),请执行以下操作:
git branch -f --track $BRANCH origin/$BRANCH
这会重新创建$BRANCH
作为跟踪分支。 尽管已经存在$BRANCH
, -f
强制创建。 如果通常使用默认值(即git-config参数branch.autosetupmerge
为true),则--track
是可选的。
注意,如果origin/$BRANCH
尚不存在,您可以通过将本地$BRANCH
推送到远程存储库来创建它:
git push origin $BRANCH
接下来是上一个命令,将本地分支推进到跟踪分支。
#7楼
在这里,使用github
和git version 2.1.4
,只需:
$ git clone git@github.com:user/repo.git
而且遥控器来自itelsef,即使没有在本地链接:
$ git remote show origin* remote originFetch URL: git@github.com:user/repo.gitPush URL: git@github.com:user/repo.gitHEAD branch: masterRemote branches:develop tracked <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<master trackedLocal branch configured for 'git pull':master merges with remote masterLocal ref configured for 'git push':master pushes to master (up to date)
但当然,仍然没有本地分支:
$ git branch
* master <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
看到? 现在,如果您只是结帐develp,它将自动执行魔术:
$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch 'develop'
太简单!
摘要。 只需运行以下两个命令:
$ git clone git@github.com:user/repo.git
$ git checkout develop
#8楼
我使用以下命令(假设您的本地分支名称是“branch-name-local”,远程分支名称是“branch-name-remote”):
$ git branch --set-upstream-to=origin/branch-name-remote branch-name-local
如果本地和远程分支具有相同的名称,则只需执行以下操作:
$ git branch --set-upstream-to=origin/branch-name branch-name
#9楼
这不是这个问题的直接答案,但我想在这里留下一个注释,以便在尝试配置上游分支时可能遇到与我相同问题的任何人。
警惕push.default 。
对于较旧的git版本,默认值是匹配的 ,如果你有,那将导致非常不良的行为,例如:
本地分支“master”跟踪到origin / master
远程分支“上游”跟踪到上游/主站
如果您在“上游”分支上尝试“git push”,则使用push.default匹配 git会自动尝试将本地分支“master”合并为“upstream / master”,从而导致大量混乱。
这样可以提供更明智的行为:
git config --global push.default upstream
#10楼
1-使用以下命令更新本地元数据: git fetch --all
2-使用: git branch -a显示您的远程和本地分支,请参阅以下屏幕截图
3-切换到目标分支,即要与远程链接:使用
git checkout branchName
例如:
4-使用以下方法将本地分支链接到远程分支:
git branch --set-upstream-to nameOfRemoteBranch
注意: nameOfRemoteBranch :从步骤2“git branch -r”的输出中复制
使用示例:
#11楼
这也会奏效
git branch --set-upstream-to=/< remote>/< branch> < localbranch>
#12楼
使用'--track'选项
git pull
:git checkout --track <remote-branch-name>
要么:
git fetch && git checkout <branch-name>
#13楼
或者简单地通过:
如果你还没有进入分支,请切换到分支:
[za]$ git checkout branch_name
跑
[za]$ git branch --set-upstream origin branch_name
Branch origin set up to track local branch brnach_name by rebasing.
你准备好了:
[za]$ git push origin branch_name
你可以alawys看一下配置文件,看看通过运行跟踪什么:
[za]$ git config -e
知道这一点也很好,它显示了哪些分支被跟踪,哪些分支没有。 :
[za]$ git remote show origin
#14楼
实际上,对于已接受的工作答案:
git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa
#15楼
要创建新分支,我们可以使用以下命令
git checkout --track -b example origin/example
对于已经创建的分支来创建远程之间的链接然后从该分支使用下面的命令
git branch -u origin / remote-branch-name
#16楼
编辑.git/config
可能是最简单,最快捷的方式。 无论如何,这就是处理远程分支的Git命令正在做的事情。
如果您不想手工处理文件(并且这并不难),您可以随时使用git config
来执行此操作......但是,这只是编辑.git/config
文件,无论如何。
当然,有一些方法可以在使用git checkout
时自动跟踪远程分支(例如,通过传递--track
标志),但这些命令适用于新分支,而不是现有分支。
#17楼
您可能会发现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
#18楼
对于像我这样只想将本地分支名称与远程分支名称同步的人来说,这是一个方便的命令:
git branch -u origin/$(git rev-parse --abbrev-ref HEAD)
#19楼
您可以执行以下操作(假设您已在主服务器上签出并希望推送到远程分支主服务器):
如果您还没有设置'遥控',请设置它
git remote add origin ssh://...
现在配置master来知道跟踪:
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
并推:
git push origin master
#20楼
确保你运行:
git config push.default tracking
能够推动无故障
让现有的Git分支跟踪一个远程分支?相关推荐
- 如何在Git中克隆所有远程分支?
我有一个master和一个development分支,都被推送到GitHub . 我已经clone d, pull ed和fetch ed,但是除了master分支以外,我仍然无法获得任何东西. 我敢 ...
- git checkout 远程分支_git的远程分支是干啥的,和本地的有什么区别?
不知道大家有没有经历过,当我们切换到了一个新的分支想要提交代码的时候,总会遇到这样的错误. 我们把日志里的英文翻译过来是说,我们当前的分支没有设置任何上游分支.然后git提示我们可以运行下面这行代码来 ...
- 找出本地分支正在跟踪哪个远程分支
也可以看看: 如何查看哪个Git分支正在跟踪哪个远程/上游分支? 如何找出本地分支正在跟踪哪个远程分支? 我需要解析git config输出,还是有一个命令可以帮我做到这一点? #1楼 我用这个别名 ...
- Git 分支篇之远程分支
本文转载自Pro Git(中文版) 本节讲解命令:git push <远程仓库> <本地分支>:<远程分支>.git fetch <远程仓库>.gi ...
- Git创建本地分支并关联远程分支
创建本地分支 git branch 分支名 例如:git branch dev,这条命令是基于当前分支创建的本地分支,假设当前分支是master(远程分支),则是基于master分支创建的本地分支de ...
- 【Git】Git 分支管理 ( 删除远程分支 | 查看远程分支 git branch -a | 删除远程分支 git push origin --delete feature1 )
文章目录 一.查看远程分支 二.远程分支分析 三.删除远程分支 一.查看远程分支 执行 git branch -a 命令 , 可以查看当前 本地仓库 对应的 远程仓库 的所有分支 ; 远程分支内容 : ...
- git创建与管理远程分支
git创建与管理远程分支 http://blog.csdn.net/fyh2003/article/details/7528157 gitbranch服务器compressionfileup 1. ...
- git删除本地分支、删除远程分支 复制分支
git删除本地分支.删除远程分支 It_BeeCoder 2019-05-15 09:47:20 80268 收藏 15 展开 https://blog.csdn.net/lihua5419/ar ...
- git 删除本地和远程分支_如何在本地和远程删除Git分支
git 删除本地和远程分支 In most cases, it is simple to delete a Git branch. You'll learn how to delete a Git b ...
最新文章
- 3d查看器无法加载三维模型_珠峰登顶成功,送套三维模型给你
- boost::proto::display_expr相关的测试程序
- php实现mysql分表
- 国科大提出FreeAnchor,新一代通用目标检测方法,代码已开源
- cascade=CascadeType.ALL的深坑
- 题解 P1006 传纸条
- 云上直播性能优化及测试方案详解
- 低代码--低代码开发(LCDP)介绍
- Codelf插件的使用
- PR(Adobe Premiere Pro)软件基础知识
- 线性代数的本质(第二部分)
- 家居收纳风行,东芝冰箱足以装下你想要的品质生活
- 史上最全Android文件管理器技术方案细节
- 弘辽科技:淘宝直通车ROI怎么提升?直通车ROI多少正常?
- python reverse方法和reversed方法的区别和使用
- android sim卡工具,手机sim卡工具包老是弹出来怎么办?sim卡工具包不断弹出删除方法...
- 服务级别协议(SLA)与运行水平协议(OLA)
- Maven setting配置文件
- 喜马拉雅修改资料提示服务器升级,喜马拉雅怎么修改个人资料 喜马拉雅个人资料在哪里修改...
- python_day11(笔记及练习)