首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
开源技术
›
开源技术
›
git怎样将多个提交归并为一个提交
返回列表
发新帖
git怎样将多个提交归并为一个提交
[复制链接]
发表于 2026-1-18 06:16:15
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
目次
第一种:利用git rebase下令
第二种:利用git reset下令 + 重新提交
第一种:利用git rebase下令
利用以下下令的此中一种启动交互式 rebase
git rebase -i 你想要合并提交的父提交的哈希值
git rebase -i <commit-hash>^
(^ 符号用于指定该提交的父提交,即你想要从这个父提交之后的所有提交开始 rebase)
git rebase -i HEAD~n
(n表示要合并的提交个数)
复制
代码
比如你举行了五次提交
C1 => C2 => C3 => C4 => C5
复制
代码
如今你想把最新的C3、C4和C5这3个提交归并为一个提交,终极提交汗青像下面如许
C1 => C2 => C345
复制
代码
则你可以用以下三种下令中的一种
git rebase -i C2的CommitID
git rebase -i C3的CommitID^
git rebase -i HEAD~3
复制代码
交互式 rebase 会打开一个文本编辑器(如 vim),列出你想要重新应用的提交,大概像下面如许。
pick C3的CommitID C3的提交信息
pick C4的CommitID C4的提交信息
pick C5的CommitID C5的提交信息
# 某注释内容
# 某注释内容
# 某注释内容
# 某注释内容
# 某注释内容
复制代码
你可以通过以下方式归并提交:
将你想要归并的提交前面的 pick 改为 fixup 或 squash(两者都用于归并提交,但 squash 会生存归并提交的
日志
消息,而 fixup 会扬弃它,只生存第一个提交的
日志
消息)。
你可以将除了第一个提交之外的全部提交都改为 fixup 或 squash,以将它们归并到第一个提交中。
比如你想把C3、C4和C5这3个提交归并为一个提交,且提交信息用C3的提交信息,则可以将温变编辑为像下面如许
pick C3的CommitID C3的提交信息
fixup C4的CommitID C4的提交信息
fixup C5的CommitID C5的提交信息
# 某注释内容
# 某注释内容
# 某注释内容
# 某注释内容
# 某注释内容
复制代码
然后生存你的更改并关闭编辑器。Git 将根据你的指示重新应用提交。
假如 rebase 过程中出现辩论,Git 会停息 rebase 并让你办理辩论。办理辩论后,利用 git add 来标志辩论已办理,并利用 git rebase --continue 来继承 rebase 过程。
假如 rebase 乐成完成,你的提交汗青就会更新,多个提交会被归并为一个提交。你可以利用 git log 来查察新的提交汗青。
第一种方法教学完毕。
第二种:利用git reset下令 + 重新提交
起首利用git log查察提交汗青,比如结果像下面如许
提交5 CommitHash5
提交5信息
提交4 CommitHash4
提交4信息
提交3 CommitHash3
提交3信息
提交2 CommitHash2
提交2信息
提交1 CommitHash1
提交1信息
复制代码
假如你想把提交5、提交4、提交3归并为一个提交,你可以先将
版本
回退到提交且在回退时生存工作区的变更,利用以下下令:
git reset CommitHash2
复制代码
这条下令会将
版本
回退到提交2,这可以通过git log下令可以查察到。同时工作区内容仍为提交5
版本
的内容。
然后通过git status下令可以看到提交2到提交5之间的变更环境
然后你可以通过git add和git commit来天生一个提交,如许你就将提交5、提交4、提交3归并为了一个提交。
第二种方法教学完毕。
对于上面这种操纵,你的提交汗青就酿成了提交1 => 提交2 => 由345归并的谁人提交。
但是偶然,远端分支版本比力落后,而本地分支版本较新,远端分支版本到本地分支版本之间有多个提交,你想把这多个提交归并为一个提交。可以先将本地分支回退到长途分支一样的版本同时生存工作区的变更,利用以下下令:
git fetch origin
git reset origin/远端分支名称
# 这里origin是远端仓库的别名
复制代码
然后和刚才一样,你可以通过git add和git commit来天生一个提交,如许你就将远端分支版本到本地分支版本之间的多个提交归并为了一个提交。
第三种:git commit --amend
end
回复
使用道具
举报
返回列表
浏览过的版块
分布式数据库
人工智能
容器及微服务
前端开发
数据仓库与分析
Oracle
DevOps与敏捷开发
中间件
SQL-Server
物联网
徐锦洪
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表