git PR合并提交(rebase方式)

您所在的位置:网站首页 git合并多次提交的代码 git PR合并提交(rebase方式)

git PR合并提交(rebase方式)

2024-07-15 13:25| 来源: 网络整理| 查看: 265

一、参考资料

Gitee 工作流说明

二、常用指令 # 继续添加提交 # 您可能会在前次提交的基础上,继续编辑构建并测试更多内容,可以使用 `commit --amend` 继续添加提交。 git commit --amend git push -f 三、合并提交(rebase方式)

rebase详解——非常精髓

git merge和git rebase的区别, 切记:永远用rebase

Git使用Merge和Rebase区别及心得技巧

如果您提交了一个PR以后,根据检视意见完成修改并再次提交了PR,您不想让审阅者看到多次提交的PR,因为这不便于继续在检视中修改,那么您可以合并提交的PR。合并提交的PR是通过压缩Commit来实现的。

rebase通常是发生在自己的个人branch上。

3.1 rebase 和 merge的区别

rebase 的冲突是一个一个解决,如果有10个冲突,先解决第1个,然后才会出现第2个冲突,直到所有冲突解决完。

merge 是所有的冲突都会显示出来。

rebase工作流

冲突全部解决,rebase成功。

git rebase while(存在冲突) { git status 找到当前冲突文件,编辑解决冲突 git add -u git rebase --continue if( git rebase --abort ) break; }

merge工作流

git pull 编辑冲突文件 git add . git commit -m "feat: this is a comment" git push 3.2 关键步骤

先在本地分支上查看日志。

git log

把顶部的n个提交记录聚合到一起进入,注意n是一个数字。

把需要压缩的日志前面的pick都改成s,s是squash的缩写。注意必须保留一个pick,如果将所有的pick都改成了s就没有合并的目标了,会发生错误。修改完成以后,按ESC键,再输入:wq,会跳出一个界面,问你是否进入编辑提交备注的页面,输入e以后,进入合并提交备注的页面。请把需要合并的备注都删掉,只保留合并目标的备注,再按ESC键,输入:wq保存退出即可。

# 如果存在该文件,删除rebase-merge rm -fr ".git/rebase-merge" git rebase -i HEAD~n # 修改合并的配置 git rebase --edit-todo

解决冲突

# 1. 查看冲突 git status # 2. 手动解决冲突 # 3. 继续add git add -u # 4. 继续合并提交 git rebase --continue # 5. 重复1-4步骤,直到所有冲突都解决了

如果rebase过程中,你想中途退出,恢复rebase前的代码则可以用指令:

git rebase --abort

pull远程分支

git pull origin yourbranch

push推送远程仓库。

git push -f origin yourbranch

回到gitee上的PR提交页面查看,您就可以看到之前的提交已经合并了。

3.3 fork分支

clone远程仓库到本地

# 把远程 fork 仓库复制到本地 git clone https://gitee.com/$user_name/$repository_name # 设置本地工作目录的 upstream 源(被 fork 的上游仓库) git remote add upstream https://gitee.com/openeuler/$repository_name # 设置同步方式,此处 git remote set-url --push upstream no_push

更新本地分支

git fetch upstream git checkout master git rebase upstream/master

拉分支

git checkout -b myfeature

然后在 myfeature 分支上编辑和修改代码。

保持分支和master同步

执行merge的时候,请不要使用 git pull,因为这种方式会使提交历史变得混乱,并使代码更难被理解。

# While on your myfeature branch git fetch upstream git rebase upstream/master

提交变更

git add . git commit -m "提交原因"

您可能会在前次提交的基础上,继续编辑构建并测试更多内容,可以使用 commit --amend 继续添加提交。

push推送到远程

git push -f origin myfeature 3.4 回退分支

创建一个分支并用upstream进行同步

# create a branch git checkout -b myrevert # sync the branch with upstream git fetch upstream git rebase upstream/master

如果还原的分支是:merge commit

# SHA is the hash of the merge commit you wish to revert git revert -m 1 SHA

如果还原的分支是:single commit

# SHA is the hash of the single commit you wish to revert git revert SHA

push推送到远程

git push ${your_remote_name} myrevert 3.5 处理提交冲突

如何处理代码冲突

先将分支切换到master上,并完成master的rebase

git checkout master git fetch upstream git rebase upstream/master

将分支切换到您使用的分支上,并开始rebase

git checkout yourbranch git rebase master

用vi等工具查看冲突

解决冲突以后,再把修改提交上去

git add . git rebase --continue git push -f origin yourbranch 四、FAQ Q:删除文件失败 $ rm -rf ./.git/rebase-merge rm: cannot remove './.git/rebase-merge': Device or resource busy 错误原因: 未知 解决办法: 用腾讯电脑管家【文件粉碎】功能,彻底删除该文件

在这里插入图片描述

Q:缺少.git/rebase-merge/head-name导致rebase失败

执行git rebase过程中断后报No such file or directory错误的解决方法

$ git rebase --continue warning: could not read '.git/rebase-merge/head-name': No such file or directory 解决办法: 将git rebase产生的中间文件删除,重新rebase rm -rf .git/rebase-merge git rebase yourbranch


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3