有人分叉了我的Github项目并进行了一些更改。如何将更改合并到我的上游版本中?
此外,是否可以仅提取特定提交?
我正在寻找的是是否有办法提取特定提交而不是整个分支。
答案 0 :(得分:47)
拉入单个提交将是一个挑选,并将重写提交ID(并在保留作者时将您标记为提交者)。不过,这个过程非常简单:
git fetch git://github.com/user/project.git
git cherry-pick <SHA-COMMIT-ID>
您从存储库日志中获取SHA,例如:
git log --oneline
b019cc0 Check whether we have <linux/compiler.h>.
0920898 Include <linux/compiler.h> before including <linux/usbdevice_fs.h>.
cbf0ba1 Add DLT_DBUS, for raw D-Bus messages.
77ed5cd Libnl 2.x returns its own error codes, not errnos; handle that.
使用git cherry-pick 0920898
,您可以将相应的提交带到当前分支。
答案 1 :(得分:1)
尝试在github上使用/ forkqueue。 在那里你可以将提交合并到你的分支。
或转到“网络”标签,然后选择“Forkqueue”
答案 2 :(得分:1)
有一个很棒的工具,叫做hub,它提供了一些有用的工具来清理请求请求,并且通常“帮助您在git上获胜”。
在这种情况下,一个有用的命令是:
git am -3 <url>
这使您可以从url中获取更改并将其提交/更改应用于当前的本地git,而无需获取远程存储库(大型存储库很方便)。
如果在要捕获的提交的git网页上使用此命令,最终将在git中获得此提交。甚至更有用:提交作者将被保留,不会被您替代(就像您使用git rebase
一样)。如果将此内容推送到您的存储库中,更改将由您提交,但由原始作者编写。
Nathaniel Talbott的this指南是有关此主题的很好资源。它显示了一个很棒的工作流,可以处理请求请求,而不是依靠github上的“恶意”合并请求请求按钮。