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

栏目: 编程工具 · 发布时间: 7年前

内容简介:原文:https://codewithhugo.com/split-an-existing-git-commit/Git 与其他版本控制系统的主要区别之一,在于其允许用户重写历史。实现这一目的的主要途径则是

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

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

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

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

比方说在一次 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>   将所需的新提交引入我们的分支中了。


以上所述就是小编给大家介绍的《[译] 分割一个已存在的 git commit》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++程序设计

C++程序设计

谭浩强 / 清华大学出版社 / 2004-6-1 / 36.00元

《C++程序设计》作者深入调查了我国大学的程序设计课程的现状和发展趋势,参阅了国内外数十种有关C++的教材,认真分析了学习者在学习过程中遇到的困难,研究了初学者的认识规律。在本书中做到准确定位,合理取舍内容,设计了读者易于学习的教材体系,并且以通俗易懂的语言化解了许多复杂的概念,大大减少了初学者学习C++的困难。C++是近年来国内外广泛使用的现代计算机语言,它既支持面向过程的程序设计,也支持基于对......一起来看看 《C++程序设计》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具