发布于 2026-01-06 5 阅读
0

拆分现有的 git 提交 DEV 的全球展示与讲述挑战赛,由 Mux 呈现:展示你的项目!

拆分现有的 Git 提交

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

与其他版本控制系统相比,其主要区别之一git在于它允许用户重写版本历史记录。实现这一目标的主要方法是使用 `git version` git rebase,通常后跟一个 `git version` 来git push --force用本地历史记录覆盖远程历史记录。

这里介绍如何使用rebasereset和 来拆分现有提交commit

假设你在一个提交中编辑了两个文件(A 和 B),你想将其中一个文件(A)的更改导入到当前分支,但不想导入另一个文件(B)的更改。

使用这种git cherry-pick <commit-hash>方法不可行,因为它会同时引入 A 和 B 的更改。

解决方案是将提交拆分为 2 个,然后只选择包含 A 更改的新提交。

这样做:

  • 运行git rebase -i <commit-hash>~(注意~)或git rebase -i <hash-of-previous-commit>
  • 在变基编辑界面找到要拆分的提交,将括号更改picke( edit)。
  • 保存并退出(ESC然后按:wqCtrl+X 关闭 VIM)
  • git reset HEAD~重置分阶段更改
  • git add [files-to-add]我们想要添加到第一次提交中的所有文件(这里是git add A
  • git commit通常情况下,会附带一条消息等等
  • 运行任意轮次的提交操作:
    • git add [other-files-to-add]
    • git commit
  • git rebase --continue表示拆分已完成,并继续执行变基操作。

最后,我们可以git cherry-pick <new-commit-hash>将更改提交到我们的分支了。

如果您对使用 git 有任何疑问,请随时在下方评论或在推特上联系我@hugo__df

订阅即可在您的收件箱中第一时间收到最新文章(比其他人更早)。

封面照片由Markus SpiskeUnsplash上提供

文章来源:https://dev.to/hugo__df/split-an-existing-git-commit-26d6