在工作/实习时常见的git操作---保姆级别教程
切换分支
假设我们在远程仓库新建了分支 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
使用gerrit管理代码,提交的一个push,冲突了但是需要保留之前的comment
先git pull 拉取线上的代码,然后找到本地的那个提交的hash码,git cherry-pick 哈希码 。然后修改代码 git commit --amend ,再push就可以了。
标题:在工作/实习时常见的git操作---保姆级别教程
作者:limanting
地址:https://blog.manxiaozhi.com/articles/2021/08/08/1628416368974.html