内容简介:原文:https://codewithhugo.com/split-an-existing-git-commit/Git 与其他版本控制系统的主要区别之一,在于其允许用户重写历史。实现这一目的的主要途径则是
原文:https://codewithhugo.com/split-an-existing-git-commit/
Git 与其他版本控制系统的主要区别之一,在于其允许用户重写历史。实现这一目的的主要途径则是 git reabse
,通常还跟随着一句 git push --force
以用本地历史重写远端历史。
这里要谈论的是如何用 rebase
、 reset
和 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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 【图像分割】图像分割专栏栏主自述:分割,我们究竟在研究什么?
- 【图像分割模型】用BRNN做分割—ReSeg
- 语义分割:GSCNN 提高边缘和小目标的分割性能
- 语义分割领域开山之作:Google提出用神经网络搜索实现语义分割
- 【图像分割模型】BRNN下的RGB-D分割—LSTM-CF
- 分割算法总结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
构建之法(第三版)
邹欣 / 人民邮电出版社 / 2017-6 / 69.00元
软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是,软件工程 的技术对于投身 IT 产业的学生来说是非常重要的。作者有在世界一流软件企业 20 年的一线软件开 发经验,他在数所高校进行了多年的软件工程教学实践,总结出了在 16 周的时间内让同学们通过 “做 中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈。在此 ......一起来看看 《构建之法(第三版)》 这本书的介绍吧!