采取这种情况:
我决定在github.com上"分叉"代码库,并开始执行我的例程:编辑 - 提交 - 推送; 又名hack hack hack.
在我做了一些更改后,我看到另一个人在同一个项目上做了一些更改,我喜欢它们!
我决定将它们合并到我的中.问题是,我只想要一个特定提交的"部分",在他做过的几个提交中.
获得这些选择的更改量的最有效方法是什么,合并到我的'fork'中?
在掠夺IRC世界的浪潮之后,有人给出了一个很好的解决方案:
git cherry-pick SHA1 --no-commit git add --patch
希望这可以帮助其他人有同样的问题!
编辑:好的,也许不是那么简单.以下是完整步骤:
首先,您必须在您的存储库中,执行必要的操作cd
以进入您的工作目录.
您现在需要添加远程分支,然后获取它.这样做:
git remote add someUser git://github.com/someUser/someRepo.git
git fetch someUser
您现在可以运行命令,例如git log someUser/master
找到要在"部分"中合并的提交SHA1.
拥有SHA后,您现在可以运行:
git cherry-pick -n SHA1
SHA1
提交SHA 在哪里,呃!
很可能会出现冲突,具体取决于提交的时间长度,以及项目特定区域的更改频率.抱歉,您必须使用可靠的编辑器手动解决这些问题.因此,拉出VIM,或者其他任何你使用的东西,然后破解冲突,直到你到达你喜欢这些变化的阶段.
您现在必须将索引重置为HEAD修订版,然后您可以使用trusty GIT add --patch
命令来选择您想要的更改:
git reset HEAD
git add --patch
要么 git add -p
好极了!提交时间:
git commit -m "I merged a select amount of changes"
要清理乱七八糟的东西(你不说的内容git add --patch
)并且只保留工作存储库中的选定更改,请运行:
git reset --hard HEAD
显然git checkout -f
也是另一种选择.