草履虫都能学会的git rebase

Git rebase

说实话我挺惭愧的,学了两年半的git,今天才会git rebase。

准备工作

准备一个git仓库,简单点就行。这里我用gitlab做实验展示
这个应该不用我教
然后导到本地
在这里插入图片描述

然后创建两个分支,分别是我晗哥和佳姐的开发分支
在这里插入图片描述

接下来切换到晗哥的branch。

在这里插入图片描述

现在晗哥修改readme.md文件
在这里插入图片描述
然后提交到git服务器,提出merge request
以上都不是重点,默认你们都会。
在这里插入图片描述
然后就merge进去,看看main变成啥样了
在这里插入图片描述
接下来呢,佳姐也开始修改readme
在这里插入图片描述
同样提交代码,发起merge request
在这里插入图片描述
不出意外,出现了冲突
在这里插入图片描述
这个时候我们开始rebase

  1. 第一步,将最新的main分支拉到本地
PS D:\Users\Administrator\IdeaProjects\learnrebase> git checkout  main      
Switched to branch 'main'
Your branch is up to date with 'origin/main'.       
PS D:\Users\Administrator\IdeaProjects\learnrebase> git fetch         
remote: Enumerating objects: 1, done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 1
Unpacking objects: 100% (1/1), 247 bytes | 41.00 KiB/s, done.
From gitlab.com:c3965/learnrebase
   acb9fa5..6d8ba08  main       -> origin/main
PS D:\Users\Administrator\IdeaProjects\learnrebase> git pull
Updating acb9fa5..6d8ba08
Fast-forward
 README.md | 93 +--------------------------------------------------------------
 1 file changed, 1 insertion(+), 92 deletions(-)
PS D:\Users\Administrator\IdeaProjects\learnrebase> 

  1. 接下来切回 jiajie 分支
PS D:\Users\Administrator\IdeaProjects\learnrebase> git checkout jiajie
Switched to branch 'jiajie'
Your branch is up to date with 'origin/jiajie'.
PS D:\Users\Administrator\IdeaProjects\learnrebase>
  1. 然后rebase,肯定有冲突,别急
PS D:\Users\Administrator\IdeaProjects\learnrebase> git rebase main
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
error: could not apply 41d9a5a... jia first commit
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 41d9a5a... jia first commit
PS D:\Users\Administrator\IdeaProjects\learnrebase> 

console信息也告诉我们,问题出在了 README.md上面,那么看看idea中这个文件啥状态
在这里插入图片描述
以=====为分割, 上面是main,下面是jiajie的分支修改。我们要做的就是解决这块的冲突。比如佳姐认为应该先执行她的代码,
那我就改成这样

在这里插入图片描述
4. 重点来了, 改好之后先要 add 然后再 continue

PS D:\Users\Administrator\IdeaProjects\learnrebase> git add .\README.md
PS D:\Users\Administrator\IdeaProjects\learnrebase> git rebase --continue

然后跳入 vim, 按i进入编辑模式,这里我修改了第一行的信息,标注是我做的rebase
在这里插入图片描述
然后 esc + : + wq 保存并退出(按理说这个你们也应该会)
注意:由于idea的terminal设置,有的人按esc会直接跳到上面的代码编辑区。这里分享一个解决办法https://www.jianshu.com/p/f1ae155cda6e

  1. 最后 git push。 你会发现push不上去
PS D:\Users\Administrator\IdeaProjects\learnrebase> git add .\README.md
PS D:\Users\Administrator\IdeaProjects\learnrebase> git rebase --continue
[detached HEAD d92f2c3] rebased by siwen           
 1 file changed, 9 insertions(+), 1 deletion(-)
Successfully rebased and updated refs/heads/jiajie.
PS D:\Users\Administrator\IdeaProjects\learnrebase> git push
To gitlab.com:c3965/learnrebase.git
 ! [rejected]        jiajie -> jiajie (non-fast-forward)                    
error: failed to push some refs to 'gitlab.com:c3965/learnrebase.git'       
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.            
hint: 'git pull ...') before pushing again.                                 
hint: See the 'Note about fast-forwards' in 'git push --help' for details.  
PS D:\Users\Administrator\IdeaProjects\learnrebase>       

这个时候我们就要用到下面这个命令

PS D:\Users\Administrator\IdeaProjects\learnrebase> git push --force-with-lease origin jiajie
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.                         
Writing objects: 100% (3/3), 293 bytes | 293.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0        
remote: 
remote: View merge request for jiajie:
remote:   https://gitlab.com/c3965/learnrebase/-/merge_requests/2
remote: 
To gitlab.com:c3965/learnrebase.git                  
 + 41d9a5a...d92f2c3 jiajie -> jiajie (forced update)
PS D:\Users\Administrator\IdeaProjects\learnrebase> 

接下来我们去gitlab页面看看
在这里插入图片描述

可以merge咯,看看merge以后main分支啥效果,
在这里插入图片描述
完美!!!学会了点个收藏给个赞呗

One more thing

需要Copilot、JetBrains 全家桶全插件全主题,详情可以咨询客服,关注【AIGoland之星】,添加“星标”, 获取每天技术干货,突破自我,成为牛逼架构师。

例如:
回复【ebook】百余本精选电子书
回复【jetbrain】解放开发工具

更多惊喜关注后获得

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值