Ricardo

Git rebase 与冲突处理记录

阅读时长: 2 分钟

git rebase

medium参考
掘金参考

简单理解,git rebase 会省去一些不必要的记录,让整个log更好看

最实在就是,当你从master checkout 一个分支进行feature功能开发,别人开发的功能完成了。你需要合并别人的代码,然后继续开发

这个时候使用git merge会记录别的数据,如果是用git rebase会更好些

  1. 当前分支为clin, 远程分支别人更新过后
Bash
1
2
git rebase origin/release # 合并远程 origin/release 分支
git rebase master # 合并本地master分支
  1. 查看clin的git log发现
代码
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
commit 512d838187acdcb33338fa6960a5cb1f8dc0644f (HEAD -> clin)
Author: clin <user@example.com>
Date:   Sat Jan 14 16:35:03 2023 +0800

    rm cdn picture icon

commit 880816383efc00551ffbf4aa30d217ab1aba3e56 (origin/release)
Author: nickname <user@example.com>
Date:   Sat Jan 14 08:36:15 2023 +0000

    删除msg

commit cd32eff64d2a60cfdda784de472d415d97c55191 (origin/master, release, master)
Merge: 6e2e9cc c77e957
Author: nickname <user@example.com>
Date:   Fri Jan 13 02:06:55 2023 +0000
  1. 查看origin/release的git log
代码
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
commit 880816383efc00551ffbf4aa30d217ab1aba3e56 (HEAD -> release, origin/release)
Author: nickname <user@example.com>
Date:   Sat Jan 14 08:36:15 2023 +0000

    删除msg

commit cd32eff64d2a60cfdda784de472d415d97c55191 (origin/master, master)
Merge: 6e2e9cc c77e957
Author: nickname <user@example.com>
Date:   Fri Jan 13 02:06:55 2023 +0000

对比log日志,明显会让强迫症舒服

git pull自动rebase

冲突

有时候git pull 自动变成 git rebase git pull 是一个组合命令,等于 git fetch + git merge。 目前不是很清楚为什么会出现rebase,但猜测应该是pull自动执行的 git pull –rebase origin master

代码
1
2
3
4
5
6
7
8
Auto-merging src/App.vue
CONFLICT (content): Merge conflict in src/App.vue
error: could not apply 953b627... active
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 953b627... active

拉取远程分支1 git pull origin test:test 拉取远程分支2 git checkout -b test <name of remote>/test

遇到这种情况的处理方式

  • 处理冲突,然后执行 git rebase --continue
  • 放弃更新,回到之前的版本git rebase --abort
  • 跳过代码冲突,以远程分支为主,忽略本地代码git rebase --skip

git rebase –skip

代码
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
commit faf2313d3ae7ca5af1f6011d73fc32db99bb81a9 (HEAD -> release, origin/release)
Author: nickname <user@example.com>
Date:   Sat Jan 14 13:41:57 2023 +0000

    Update App.vue origin release

commit 880816383efc00551ffbf4aa30d217ab1aba3e56
Author: nickname <user@example.com>
Date:   Sat Jan 14 08:36:15 2023 +0000

    删除msg

commit cd32eff64d2a60cfdda784de472d415d97c55191 (origin/test, origin/master, test, master)
Merge: 6e2e9cc c77e957
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
记录自己
Built with Hugo
主题 Stack 由 Jimmy 设计