github合并多个commit message以及rebase解决文件冲突

深度学习求解PDE相关代码全部在我的仓库添加链接描述,自取

github仓库合并多个commit message

问题描述如下:
在这里插入图片描述

第一步:确保自己在对应分支上

比如说现在我要合并issue/108分支的提交记录,使用git log --oneline查看提交记录一共有6次,

git log --oneline

在这里插入图片描述

第二步:使用rebase功能

git rebase -i HEAD~6

在这里插入图片描述
将上述内容修改如下,把第二行以后的pick改成s即可
在这里插入图片描述

由于vscode默认打开的是nano编辑器,将内容做好修改以后,需要保存文件,保存过程是:

  1. Ctrl + O(不会退出,会提示保存)
  2. Enter(确认保存)
  3. Ctrl + X(退出nano)

第三步:

编辑合并后的Commit Message,保存并退出 nano 后,Git 会弹出另一个编辑窗口,用于编辑最终的 commit message,你会看到所有被 squash 的提交消息,类似:
在这里插入图片描述
此时可以修改这些message,比如说我修改为下面这个内容,继续保存并退出文件。
在这里插入图片描述

  1. Ctrl + O(不会退出,会提示保存)
  2. Enter(确认保存)
  3. Ctrl + X(退出nano)

第四步:

上一步结束以后界面是
在这里插入图片描述

第五步:强制推送即可:

git push origin issue/108 --force

github解决rebase文件冲突

issue/18从main分支切出来,但是main分支被别人做了修改,导致issue/18目前和main存在文件冲突,现在使用rebase来解决冲突。

第一步:

git pull最新的main和最新的issue/18分支,成功以后切换到issue/18

git checkout main
git pull
git checkout issue/18
git pull

第二步:使用rebase命令,展示出冲突文件

git rebase main
git status

在这里插入图片描述
在这里插入图片描述

第三步:点击冲突文件xmake.lua

比如说我选择接受当前,然后点击右下角的Complete Merge
[图片]
在这里插入图片描述

第四步:根据提示继续rebase

git rebase --continue

打印出下面这个界面
在这里插入图片描述

第五步:检查rebase是否完成

为了安全起见,我不修改任何提交信息,直接使用Esc,以及:wq保存并且退出,打印出下面这个界面,下面这个git rebase --continue是上一步的,不需要额外再用
在这里插入图片描述
这里要注意,如果这一步使用git status会打印出
在这里插入图片描述
千万不要理会,千万不要使用git pull,直接强制推送即可,

git push origin issue/18 --force
### 如何在 GitHub 上修改已提交的 Commit 信息 当需要修改已推送至远程仓库的 Commit 信息时,可以通过以下方法实现: #### 方法一:通过 `git commit --amend` 修改最近的一次 Commit 如果仅需修改最新的 Commit 信息,可以使用命令 `git commit --amend` 来更新消息。此操作会将当前工作区的内容与最新 Commit 合并,并允许重新定义 Commit 的描述信息。 运行该命令后,系统会弹出默认文本编辑器供用户输入新的 Commit 描述[^1]。完成编辑保存退出后,还需强制推送更改到远程仓库以覆盖原有记录: ```bash git push --force ``` #### 方法二:利用 `git rebase -i` 调整多条历史 Commits 对于更复杂的情况,比如想要调整多个连续的历史 Commits,则推荐采用交互式的变基工具 `git rebase -i`。指定参数为距离目标范围内的次数(如最后三次),即执行如下指令开启变基模式: ```bash git rebase -i HEAD~3 ``` 这一步骤之后,在打开的文件里可以看到每一条待处理的 Commit 记录及其哈希值列表[^3]。按照提示选择要编辑 (`edit`) 或者重写 (`squash/fixup`) 对应项的位置关系,从而达到批量修正的目的。 一旦进入某个特定版本下的状态,就可以再次运用前述提到过的 `--amend` 技巧来单独修订某一项的具体表述;或者干脆删除不需要保留下来的那些变动部分后再继续整个流程直到结束为止: ```bash git commit --amend git rebase --continue ``` 值得注意的是,无论是哪种方式都涉及到对已有数据结构做出破坏性的改变行为,因此务必小心谨慎行事以免造成不可逆的数据丢失风险。尤其是在团队协作环境下进行此类操作前最好提前沟通好策略并与同事达成一致意见再行动[^2]。 ```python # 示例 Python 脚本用于演示如何自动化上述过程 (仅供参考) import os def amend_last_commit(new_message): os.system('git commit --amend -m "{}"'.format(new_message)) os.system('git push --force') if __name__ == "__main__": new_msg = input("请输入新Commit信息:") amend_last_commit(new_msg) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谨慎付费(看不懂试读博客不要订阅)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值