如何在Git中基于指定提交历史创建与另一提交文件完全一致的新提交?
实现符合要求的提交X
完全可以做到,按照你偏好的操作思路,具体步骤如下:
- 切换到提交C'对应的分支(如果C'是游离提交,直接用
git checkout C'进入分离头指针状态即可):
git switch C'
- 检出提交C的所有文件,覆盖当前工作区和暂存区:
git checkout C -- .
这条命令会把C中的所有文件同步到当前环境,自动处理新增、修改和删除——比如C里没有aa.txt/bb.txt/cc.txt,这些文件会从当前工作区被移除,最终工作区内容和C完全一致。
- 创建提交X:
git commit -m "同步提交C的文件内容"
效果说明
- 提交X的父节点是C',因此提交历史会完整保留
A' → B' → C' → X的链路,不会丢失A'、B'、C'的提交记录。 - X的文件内容和提交C完全相同,包含a.txt、b.txt、c.txt,同时不包含C'中的aa.txt、bb.txt、cc.txt。
- 全程没有使用你禁止的
git reset --hard或git merge命令,完全匹配你想要的实现方式。
内容的提问来源于stack exchange,提问作者kensuke1984
相关产品推荐
相关产品推荐

