背景:
基于hcc1.2的开发分支拉去hcc_hotfix_1.2.0分支,解读:在仓库中基于某个分支,创建一个新的分支
做法(解决):
1、第一步:git branch hcc_hotfix_1.2.0
2、第二步:git checkout hcc_hotfix_1.2.0
3、第三步:git push origin hcc_hotfix_1.2.0
但是按照如上方法,我失误了,因为应该是基于master分支创建 hcc_hotfix_1.2.0,但是我的master分支并没有拉最新的代码,所以本地不是最新的,很尴尬,就这样创建出了hcc_hotfix_1.2.0分支。
这个时候我可以两个方案来解决这个问题:
1、合并一下就行了( 切到master分支拉取最新代码 ,然后切到hcc_hotfix_1.2.0分支,执行git merge master),master分支合并到hcc_hotfix_1.2.0。
2、删除掉,重新来过;但是删除考虑到有本地分支和远端分支的删除(此时 hcc_hotfix_1.2.0分支应该我本地和远端都是有的?),太麻烦了,果断选择第一个方法。
合并的过程又出现了新的问题:
代码顺利合并,但是推送的时候,出现了报错
fatal: The current branch hcc_hotfix_1.2.0 has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin hcc_hotfix_1.2.0
// 翻译:
// 致命:当前分支hcc_hotfix_1.2.0没有上游分支。
// 要推送当前分支并将远程设置为上游,请使用
// Git push——set upstream origin hcc_hotfix_1.2.0
问题原因:在于当前这个分支没有和任何的仓库发生关联,origin是仓库的一个指针,需要将当前的分支与这个指针之间形成关联。直接允许以下命令即可:git push --set-upstream origin hcc_hotfix_1.2.0
执行完这个命令后:
Branch 'hcc_hotfix_1.2.0' set up to track remote branch 'hcc_hotfix_1.2.0' from 'origin'.
// 分支` hcc_hotfix_1.2.0 `被设置为从` origin `跟踪远程分支` hcc_hotfix_1.2.0 `。
扩展:
git push --set-upstream origin dev // 简写:git push --u origin dev
// 这个意思是把本地dev push到orgin的dev 上,-u 表示同时建立连接,以后再推送到远程只需要git push orgin皆可以。
git分支与远程主义存在队形分支,可能是单个也可能是多个
simple方式:如果当前分支只有一个追踪分支,那个git push origin到主机时,可以省略主机名。
matching方式:如果当前分支与多个主机存在追踪关系,那么git push --set-upstream origin master将本地的master分支推送到origin主机(-set-upstream 选项会指定一个默认主机),同时指定该主机为默认主机,后面使用可以不加任何参数使用git push