前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[译] 分割一个已存在的 git commit

[译] 分割一个已存在的 git commit

作者头像
江米小枣
发布2020-06-15 21:35:16
1.4K0
发布2020-06-15 21:35:16
举报
文章被收录于专栏:云前端云前端

原文:https://codewithhugo.com/split-an-existing-git-commit/

Git 与其他版本控制系统的主要区别之一,在于其允许用户重写历史。实现这一目的的主要途径则是 git reabse,通常还跟随着一句 git push --force 以用本地历史重写远端历史。

这里要谈论的是如何用rebaseresetcommit 来分割既有的提交。

比方说在一次 commit 中,包含了两个编辑过的文件(A 和 B);但你只想把其中的 A 引入当前分支,B 则不需要。

使用 git cherry-pick <commit-hash> 并不可行,因为它会把 A 和 B 的改变都拉过来。

解决方法是将那次 commit 分成两个,然后只 cherry-pick 包含了 A 的那个。

做法如下:

  • 运行 git rebase -i <commit-hash>~ (注意 ~),或者 git rebase -i <hash-of-previous-commit>
  • 在编辑窗口中找到要更改的那次 commit,将其前面的 pick 改成 edit
  • 保存并退出 VIM
  • git reset HEAD~ 以重置阶段性的改变
  • git add [files-to-add] 所有本次需要用到的文件 (此处就是 A)
  • 正常的 git commit -m <message>
  • 一次或多次的将剩余的文件分别提交
    • git add [other-files-to-add]`
    • git commit
  • git rebase --continue 以指示分割过程完成并退出变基操作

最后,就可以用 git cherry-pick <new-commit-hash> 将所需的新提交引入我们的分支中了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档