在工作/实习时常见的git操作---保姆级别教程

  |   0 评论   |   0 浏览

切换分支

假设我们在远程仓库新建了分支 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 addgit 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