首页 文章

在GitHub上发送拉取请求仅用于最新提交

提问于
浏览
254

我在github上分叉了一个项目,并成功地对我的本地主人进行了更改,并在github上推送到了原点 . 我想发送一个pull请求,但只想包含最后一次提交 . github.com上的pull请求UI显示了最后9次提交,我不知道如何过滤掉它 .

我试图了解我是否应该创建一个新的本地分支,检查出来并以某种方式重置或重新绑定到上游?然后将我的主要ID的最后一次提交应用到新的本地分支并将其用于拉取请求?

我正在努力使这些概念正确,并找出正确的命令行来做我需要的 .

6 回答

  • 1

    您需要基本上创建一个新分支&cherry-pick要添加到其中的提交 .

    注意:在checkout / cherry-pick命令之前你可能需要这些命令git remote add upstream <git repository> git remote update

    git checkout -b <new-branch-name> upstream/master
    
    git cherry-pick <SHA hash of commit>
    
    git push origin <new-branch-name>
    

    之后,您将在github上看到 <new-branch-name> branch,切换到它并可以提交您想要的更改的pull请求 .

  • 276

    从最新提交开始创建一个新分支,该提交也位于原始存储库中:

    git branch new-branch origin/master
    git checkout new-branch
    

    然后使用 git cherry-pick 获取您想要拉取请求的单个提交 . 如果具有此提交的分支被称为 feature 并且您想要的提交是此分支中的最新提交,那么这将是

    git cherry-pick feature
    

    假设此补丁适用而没有冲突,您现在可以获得一个分支,您可以执行拉取请求 .

    在第二步中,您现在需要决定如何处理 feature 分支 . 如果您尚未在此分支上发布更改,则最佳过程可能是在新分支上重新分配此分支(并删除最后一次提交,如果这不是由 git rebase 自动完成) .

  • 26

    我最终遇到了一个叉子,想要将拉取请求提交回原始项目 .

    我有:

    • orignal_project

    • forked_project(从SHA的原始项目创建:9685770)

    • my_fork(从SHA的分叉项目创建:207e29b)

    • 我的fork(SHA:b67627b)中的提交,我想提交回原始项目

    为此,我:

    • 从原始项目分叉的SHA创建了一个新分支

    • 从原始项目中拉出了所有内容

    • cherry选择了我想提交的提交作为拉取请求

    • 把它全部推到了github

    git命令类似于:

    然后我选择了my-feature-request作为我对原始项目的pull请求的分支 .

  • 4

    这几乎对我有用:

    git checkout -b upstream upstream/master
    
    git cherry-pick <SHA hash of commit>
    
    git push origin upstream
    

    唯一的区别是:

    git push origin upstream:upstream
    

    我需要更改最后一行,以便git push在我的GitHub仓库中创建上游分支,以便我可以从中进行PR .

  • 6

    我已经完成了提交,我希望能够将其作为拉取请求隔离回当前分支 .

    所以我检查了一个新分支

    git checkout -b isolated-pull
    

    And here's where my solution differs from @Kevin Hakanson's ,因为我需要将此分支重置为我想要区分的历史记录中的位置

    git reset --hard [sha-to-diff-by]
    

    并且选择我要创建隔离拉取请求的提交

    git cherry-pick [my-isolated-commit-sha]
    

    最后把它推到遥控器上

    git push origin isolated-pull
    

    并拉请求dat shi .

  • 54

    创建一个新的(临时)分支,樱桃挑选和创建该分支的拉取请求的解决方案并不能让我满意 . 我不想更改我的存储库以使一组提交可用,所以我想出了以下替代方案:

    首先为所有感兴趣的提交创建补丁文件:

    git format-patch -1 <sha>
    

    如果感兴趣的提交恰好是最后一个,您可以使用 HEAD 而不是 <sha> .

    现在,您可以将补丁发送给源存储库的维护者,他们可以应用它们:

    git branch new-branch <master or some older commit where the fork diverged>
    git checkout new-branch
    
    git am < <the patch>
    ...
    
    git checkout master
    git merge new-branch
    

    最后,这应该看起来像是一个临时分支被拉取请求合并,但没有fork-repository中的那个额外分支 .

相关问题