拆分现有的 Git 提交
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
与其他版本控制系统相比,其主要区别之一git在于它允许用户重写版本历史记录。实现这一目标的主要方法是使用 `git version` git rebase,通常后跟一个 `git version` 来git push --force用本地历史记录覆盖远程历史记录。
这里介绍如何使用rebase、reset和 来拆分现有提交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> - 在变基编辑界面找到要拆分的提交,将括号更改
pick为e(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 Spiske在Unsplash上提供
文章来源:https://dev.to/hugo__df/split-an-existing-git-commit-26d6