欢迎各位兄弟 发布技术文章
这里的技术是共享的
如何告诉git本地分支跟踪远程分支?
默认情况下,Git中的分支彼此无关。但是,当您告诉本地分支“跟踪”远程分支时,将在这两个分支之间创建连接。您的本地分支现在在远程服务器上具有一个“对应”。
假设您当前的本地HEAD分支名为“ dev”。而且,我们还说您已经设置了它来跟踪名为“ origin”的远程服务器上的“ dev”分支。这种关系非常重要,原因有两个:
推拉变得容易得多。您可以简单地使用速记命令“ git pull”和“ git push”-不必像“ git push origin dev”中那样考虑确切的参数。比“轻松”更重要的是,这还可以防止您犯错误!
Git现在可以通知您有关“未推动”和“未推动”的提交。让我们举个例子:
(一)如果你有2个提交本地,你有没有推到远程的是,当地分公司是“提前2个提交”及其远程副本分公司。
(二)另一方面,如果尚未下载的远程分支上有4个提交,则本地分支位于其远程对应分支的“ 4个提交后面”。
这些信息对保持最新状态有很大帮助。Git在“ git status”的输出中告诉您有关此权限的信息:
$ git status
# On branch dev
# Your branch and 'origin/dev' have diverged,
# and have 1 and 2 different commits each, respectively.
#
nothing to commit (working directory clean)
创建跟踪连接有三种主要方案。
假设您的一位同事已经启动并在您的远程服务器上发布了一个分支。现在,您也希望加入并开始研究该主题。在这种情况下,只需将–track标志与“ git checkout”命令一起使用:
$ git checkout --track origin/dev
Branch dev set up to track remote branch dev from origin.
Switched to a new branch 'dev'
这将创建一个与远程分支同名的新本地分支-并直接在两者之间建立跟踪连接。
现在让我们看一下相反的情况:您启动了一个新的本地分支,现在想第一次将其发布在远程服务器上:
$ git push -u origin dev
您可以简单地通过将-u标志与“ git push”一起使用来告诉Git跟踪新创建的远程分支。
如果您只是忘记了,可以随时为当前HEAD分支设置(或更改)跟踪关系:
$ git branch -u origin/dev
来自 https://www.11meigui.com/2020/ru-he-gao-su-git-ben-di-fen-zhi-gen-zong-yuan-cheng-fen-zhi.html
如果用git push
指令时,当前分支没有跟踪远程分支(没有和远程分支建立联系),那么就会git就会报错
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
因为当前分支没有追踪远程指定的分支的话,当前分支指定的版本快照不知道要作为服务器哪一个分支的版本快照的子节点。简单来说就是:不知道要推送给哪一个分支。
那么如何建立远程分支:
克隆时自动将创建好的master
分支追踪origin/master
分支
git clone 服务器地址
git checkout -b develop origin/develop
git clone -b v1.0.0 git@gitlab (v1.0.0 是分支名)
在远程分支的基础上建立develop
分支,并且让develop
分支追踪origin/develop
远程分支。
git branch --set-upstream branch-name origin/branch-name
将branch-name
分支追踪远程分支origin/branch-name
git branch -u origin/serverfix
设置当前分支跟踪远程分支origin/serverfix
git branch -vv
比如输入
$ git branch -vv
develop 08775f9 [origin/develop] develop
feature_1 b41865d [origin/feature_1] feature_1
* master 1399706 [my_github/master] init commit
develop
分支跟踪origin/develop
feature_1
分支跟踪origin/feature_1
master
跟踪了my_github/master
,且当前分支为master
分支
那么假如我此时想要将master的改变推送到origin服务器的master分支上:
$ git checkout master//切换到master分支
...
$ git branch -u origin/master//将当前分支跟踪origin/master
Branch 'master' set up to track remote branch 'master' from 'origin'.
之后就可以执行git add和git commit了
现在再查看一下本地和远程的分支关系:
$ git branch -vv
develop 08775f9 [origin/develop] develop
feature_1 b41865d [origin/feature_1] feature_1
* master 1399706 [origin/master] init commit
master已经跟踪了origin/master了
也可以:
git clone XXXXXX
git checkout --track origin/org_dev
查看跟踪关系:
fengdeMacBook-Pro:riki fengma$ git branch -vv
master b7a26015 [origin/master] 1
* org_dev 5c65d305 [origin/org_dev] modify user app name
如果用git push指令时,当前分支没有跟踪远程分支(没有和远程分支建立联系),那么就会git就会报错
There is no tracking information for the current branch. Please specify which branch you want to merge with.
因为当前分支没有追踪远程指定的分支的话,当前分支指定的版本快照不知道要作为服务器哪一个分支的版本快照的子节点。简单来说就是:不知道要推送给哪一个分支。
下面演示如何建立这种本地和远程分支建立联系:
1.远端代码clone时会自动将创建好的本地master分支追踪到origin/master分支
2.在远程分支的基础上建立dev分支(本地dev分支存有所有远端最新文件内容),并且让本地的dev分支追踪到远端dev分支
git checkout -b dev origin/dev
3.如果想指定本地某个分支追踪到远端某个分支
git branch --set-upstream branch_1 origin/branch_2
将本地branch_1 分支合并到远端branch_2分支
本地的分支想要追踪对应远程的分支。
首先使用命令 git fetch
获取远程的分支信息。
使用以下命令追踪远程分支。
git branch -u origin/master
或者
git branch --set-upstream-to=origin/master
CS入门技能树Git入门Git简介18235 人正在系统学习中
来自 https://blog.csdn.net/qq_38734155/article/details/121161282
不同情况下的git 远程跟踪分支
1 远程没有分支,本地也没有分支
git check out -b test //创建并切换到新分支
git push -u origin test //推送到远程分支,并且跟踪远程分支
2 远程已经存在分支,本地不存在对应分支:
git checkout --track origin/test
或者git checkout -b newtest origin/test(该命令可以设置不同的分支名)
3 设置一个已有的本地分支跟踪一个刚刚拉取下来的远程分支:
git branch -u origin/test 或者 git branch --set-upstream-to=origin/test
4 删除本地跟踪的远程分支
git branch -r -d origin/branchname
5 删除git仓库上的远程分支
git push origin --delete branchname
来自 https://www.cnblogs.com/greyxy/p/13363554.html