如何创建继承feat1代码但忽略提交历史的Git新分支?
规范实现方式
有两种更高效且符合Git规范的方法,无需手动复制文件:
方法一:使用git checkout直接覆盖
- 确保当前工作区无未提交修改(如有,先执行
git stash暂存) - 切换到main分支并同步最新代码:
git checkout main && git pull - 创建并切换到干净的新分支:
git checkout -b feat1-clean - 将feat1分支的所有文件内容覆盖到当前分支:
git checkout feat1 -- . - 此时Git会将所有差异识别为工作区的全新修改,直接提交即可:
git add . && git commit -m "feat1: 迁移完整代码作为全新修改"
方法二:使用git read-tree快速覆盖
如果需要更直接的目录树替换,可以用git read-tree命令,一步完成暂存区和工作区的覆盖:
- 完成上述方法的前3步(切换到main、创建新分支)
- 执行以下命令:
git read-tree -u feat1 - 直接提交修改:
git commit -m "feat1: 迁移完整代码作为全新修改"
这两种方法都能避免手动复制可能遗漏的隐藏文件、忽略文件,全程在Git环境内操作,更安全高效。
内容的提问来源于stack exchange,提问作者safex
相关产品推荐
相关产品推荐

