当前位置:  开发笔记 > 后端 > 正文

使用GIT,我如何有选择地将一个提交的更改合并到另一个'fork'上?

如何解决《使用GIT,我如何有选择地将一个提交的更改合并到另一个'fork'上?》经验,为你挑选了1个好方法。

采取这种情况:

    我决定在github.com上"分叉"代码库,并开始执行我的例程:编辑 - 提交 - 推送; 又名hack hack hack.

    在我做了一些更改后,我看到另一个人在同一个项目上做了一些更改,我喜欢它们!

    我决定将它们合并到我的中.问题是,我只想要一个特定提交的"部分",在他做过的几个提交中.

获得这些选择的更改量的最有效方法是什么,合并到我的'fork'中?



1> Tim..:

在掠夺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也是另一种选择.


很好的步行.记住如果你只想要**整个**提交,你只需要在步骤4中发出`-n`.就像这样:`git cherry-pick SHA1`
推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有