这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战
切换分支
假设我们在远程仓库新建了分支 feature-limanting
需要切换分支之前,最好先执行一下 git fetch
拉取一下远程的代码,同步现有的分支,然后就可以 git checkout feature-limanting
,就切换到 feature-limanting
分支了。
将远程仓库的代码覆盖到本地
当我们想将本地的代码还原到远程分支的状态。
保存本地的修改到暂存区 : git reset origin/feature-limanting
不保存本地的修改到暂存区 : git reset origin/feature-limanting --hard
当分枝合并出现冲突,需要rebase代码
假如我们想要将 feature-limanting
分枝的代码合到 feature-online
上
我们需要先切换到本地 feature-online
上,执行 git pull
拉取最新的代码。
然后切换回 feature-limanting
分枝,进行 git rebase feature-online
,如果出现冲突,这时代码会自己创建一个额外的分枝上,不用担心,我们解决出现的冲突,然后 git add
再 git commit
然后 git rebase --continue
(继续解决冲突),继续解决冲突,直到执行 git rebase --continue
后回到自己的分枝上,冲突就解决完了。
冲突解决之后,git push -f
将更改强行push到远程仓库里。
然后切换到分枝 feature-online
上,执行 git merge feature-limanting --no-ff
就能够将代码很好的合起来了。
注
为什么git rebase 会出现那么多次冲突?不是一次就把冲突解决的?
——因为git rebase会根据你原来的节点,从节点的分枝上一个一个挪到最新的节点上,每挪动一次节点就会对比有没有冲突。
如果rebase最后发现有的地方解决冲突错了,有什么方法能重来吗?
—— git rebase --abort
为什么merge需要加上--no-ff
——如果不加--no-ff 不会有修改记录,可能push不上远程仓库
如果代码写一半,需要修复其他的bug怎么办
可以先将本地的修改存储起来 git stash -u
,在需要的时候再取出来 git stash -pop
\