为什么有这样的需求?
在开发过程中,本来一直维护国内版本,国外因为接入的是google等sdk,所以是另一个同事开辟了一个子分支并在上面做维护,两个分支并不需要进行合并等操作
但是某一天,需要我切换到国外的分支临时进行操作。所以在同步仓库远程代码到本地的时候出现了错误。所以有了这次的记录。
首先创建本地分支并切换
//执行
git branch google
git checkout google
// 或者执行
git checkout -b google
这样创建了
查看仓库的所有分支
git branch -a
这时候会列出仓库中的所有分支
关联本地分支到远程分支上
假设仓库中有分支名为
remote/origin/google
的分支
使用命令
git branch --set-upstream-to origin/google
为什么需要关联远程分支?
因为每次执行git pull
命令时,都需要在后面加上<remote>
<branch>
两个参数,在关联后,就不需要后面两个额外参数了
同步本地分支到最新
这时候自然想到了使用
git pull
,但是使用命令后会发现出现了大量文件冲突,甚至可能有上百个,这时候显然是不正常的。为什么?
下面看看当前分支示意图
远程分支:
远程分支
本地分支
本地分支
远程分支的 child_1 _2 _3 假设都是别人提交的
这时候 远程分支的 master_4 和 child_3 的差异实际上是非常大的。
而本地创建的分支 child_1 是在master_4 的基础上创建的,它们的工作空间的代码都是一样的。所以 master_4 == child_1
这时候如果我们执行git pull
命令,实际是将远程分支的 child_3 和 master_4 进行合并。自然会出现大量冲突
但是我不需要合并,而是直接切换到 child_3 就好了
所以执行:
git log --graph --decorate --oneline --simplify-by-decoration --all
分支图查看分支结构图
如果远程分支是
origin/google
则找到前面的分支号,然后执行
git reset --hard *******
这时候代码直接切换到了 child_3
然后可以正常工作了
网友评论