GitHub:如何从forked存储库创建pull请求到上游repo只包括一些过去的提交

我在
GitHub上分叉了一个模板库(T),并在我自己的repo(X)中使用模板做了一些工作.

现在repo X与repo T完全冲突,因为我推送到X的自定义工作.

除了使用模板进行自定义工作外,我还对模板进行了一些改进.

我创建了一个pull请求,但它包含了自forking以来我过去的所有提交.我想在pull请求中仅包含模板改进(在我的提交历史中间只有几个提交).我怎样才能做到这一点?

最佳答案 您必须从自定义提交中分离模板更改(改进提交,您想要
merge to the upstream repo with a pull-request).

更好的方法是使用两个不同的git存储库,但是如果你喜欢只维护一个,你必须:

>备份您的历史记录,创建一个新的临时分支

git checkout -b tempmaster
git checkout master#如果是master,则返回上一个

>如果您之前没有,请将原始模板存储库(T)添加为上游远程:

git remote添加上游https://github.com/
>获取所有远程更改

git fetch –all

>将当前分支硬重置为上游存储库

git reset –hard upstream / master #if master

>从temp分支导入改进提交(git cherry-pick)并修复冲突.
>完成后,推送新的“rebased”分支并创建pull-request
>现在从这个分支你可以创建自己的自定义分支git checkout -b myapp并以相同的方式导入你的自定义提交.

修复后,当您想要使用上游更改更新分叉分支(master)时,请使用rebase:
 git rebase upstream / master

点赞