git - git rebase,压缩所有提交:如何发生冲突?
问题描述
我有一个带有单个分支和大量提交的仓库。
我想将所有提交压缩为一个。
我愿意:
git rebase --root -i
(请参阅:如何将所有 git 提交压缩为一个?)
在将所有提交设置为 squash(除了第一个,设置为“pick”)并退出编辑器后,交互式 rebase 停止并要求我解决一些冲突。
我对此感到很困惑。我理解将一个分支合并到另一个分支时的冲突。挤压时我不明白:不应该将较新的提交自动视为文件的“正确”版本吗?此外,在整个提交过程中修改了几个文件,为什么只有极少数文件显示冲突?
解决方案
正如@mnestorov 的评论所暗示的那样:您可能在历史记录中合并了分支。
如果您的意图是丢弃大量历史记录并简单地将提交压缩在一起,则可以不使用git rebase
.
只需运行git reset --soft [target commit]
,然后是git commit
or git commit --amend
。
第一个将在 之上创建一个新提交[target commit]
,第二个将[target commit]
就地重写。
推荐阅读
- javascript - 在 html-collection 中查找具有特殊 src 的图像
- javascript - 如何检查firebase文档是否有一个有价值的字段?
- python - 如何在pytransition的条件函数中传递事件参数
- amazon-web-services - AWS 将文件上传到 S3 访问被拒绝,具有完全 s3 访问权限的用户 - React Native
- java - Hibernate 验证器和 Spring 版本的兼容性
- flutter - 错误“无法识别术语‘解锁文件’”
- ffmpeg - 复制摄像头和麦克风以跨多个程序使用
- android - 应用程序在关闭对等连接时崩溃 appRTC android
- python - PySpark GroupBy - 如果没有值,则保留值或 Null
- mysql - MySQL排序,忽略开头的前两个符号