在GitHub上执行pull请求时,避免不必要的合并提交和其他提交

Iva*_*Siu 24 git github

我在Github上分叉了一个项目.

让远程上游upstream和我的远程存储库成为origin.我的本地master分支设置为跟踪远程master分支.然后我在本地添加了一些东西master,我偶尔和上游合并.

直到今天,当我想发出拉取请求时,我才发现问题:拉取请求包括那些合并提交,以及我以前无需担心的那些不需要的提交.然而我想要的只是提交我做的最后一次提交,应该作为单个提交提取.我该怎么做才能解救这个?

Arr*_*ter 28

而不是合并你想要变基.你可以手动完成,也可以在拉动时自动完成.

git pull --rebase upstream master
git push --force origin master
Run Code Online (Sandbox Code Playgroud)

一旦你开始做合并,虽然这将很难做到,你需要在进行合并提交之前将分支重置为.

  • -1为git push --force解决方案提供与git push --rebase相同的级别.用户需要通过push -force警告可能存在的陷阱,这可能更具破坏性,并且repo的其他用户必须知道如果他们分支出一个完全被push -force删除的提交并且想要如何正确地做出反应合并回来 (7认同)

csd*_*csd 10

如果我理解你的问题,你想要摆脱你在分支中所做的中间/一次性提交.尝试这样的事情:

git checkout -b for-upstream remotes/origin/master (create a new branch from the upstream origin)
git cherry-pick <sha-of-the-one-commit-you-want-to-submit> (fix any conflicts if necessary)
Run Code Online (Sandbox Code Playgroud)

这应该给你一个本地"for-upstream"分支,它只包含上游master +你的1提交.然后,您可以提交该分支以获取请求


wew*_*als 6

在Github上,您无法为分支上的单个特定签入创建拉取请求,该分支具有将其与上游分隔开的多个签入.

专门为您打算进行的每个拉取请求创建一个分支.这使您可以继续工作而不必担心污染拉取请求.


Jay*_*van 3

这可行吗:创建一个单独的分支,仅包含您想要的提交,然后在该分支上发出拉取请求。