git——合并分支commit记录 squash提交

本文介绍了一种简化合并请求(MR)的方法,通过使用git命令将多个提交压缩为单一提交,以提高代码审查效率。该方法涉及创建新分支、合并并squash提交等步骤。

     在公司和别人协同合作时,作为开发需要向架构或者负责人提交mr以合并代码,为了提高review效率,有些负责人会要求一个mr仅保留一条commit记录方便代码比对review的观看,但是开发常常是很多需求和bug混合着写,不可能每个分支都暂存一下去其他分支查看吧,因此总会多几条commit出来保存一下写完的代码。

       常规可以用rebase去删除或者合并分支上的commit,但是咱rebase玩的不是很转等研究透了再发篇帖子记录一下。这里记录一种简易的方法去修改一个分支上的commit。

  • 首先先将本地分支切换的需要合并的开发分支
  • git checkout -b 新分支               基于开发分支新新建一个新分支
  • git merge --squash 需要提交的分支        将提要提交的分支合并到当前的新分支中

squash的意思是,将合并分支所有的commit修改作用到合并分支中,不会保留仍和commit记录,此时新分支就有了之前分支的所有修改,提交一个新的commit即可达到合并commit的作用,然后将原来的分支删掉,将现在的分支名修改一下强制提交就可以覆盖原来的分支让mr更清爽~

 

 

### 合并多个已提交的更改或将提交压缩到推送之前 在 Git 中,可以通过 `rebase` 或者 `merge` 来处理多个已经提交的更改。以下是两种主要方法来实现这一目标: #### 方法一:通过交互式 Rebase 压缩提交 如果希望将多次提交压缩成单次提交以便于保持历史记录整洁,可以使用交互式 rebase 功能。 运行以下命令以启动交互模式: ```bash git rebase -i HEAD~[number_of_commits] ``` 其中 `[number_of_commits]` 是要回溯的提交数量[^3]。这会打开一个编辑器界面,在该界面上可以选择保留哪些提交以及如何操作其他提交(例如将其标记为 `squash` 以合并)。完成修改后保存退出即可自动执行相应的动作。 #### 方法二:通过 Merge 执行 Fast-Forward 或 No-Fast-Forward 合并 另一种方式是利用 `merge` 命令来进行分支间的集成工作。默认情况下,当尝试合并某个作为当前分支后代节点存在的提交时,Git 不会产生额外的合并提交而是简单地向前推进指针位置;然而此行为可通过配置项调整改变——设置变量使得即使在这种场景下也会创建独立的合并提交(`--no-ff`)或者仅允许快速前进类型的合并发生(`--ff-only`) [^1]. 对于不想实际进行合并的情况,则可借助 `reflog` 查看先前状态并通过重置指令恢复至期望版本处 [^2]: ```bash git reset --hard HEAD@{1} ``` 最后需要注意的是,在准备向远程仓库推送前务必确认本地暂存区文件无误,并且如果有未解决冲突则需先妥善处置这些问题之后再继续后续流程。 ```python # Example Python Code Showing Commit Message Handling During Conflicts Resolution Process. def handle_commit_message(): try: with open("$GIT_DIR/COMMIT_EDITMSG", 'r') as f: content = f.read() print(content) except FileNotFoundError: print("Commit message file not found.") handle_commit_message() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值