避免在 git 中的拉取请求中合并提交

EGH*_*GHM 4 git github

所以,我想创建一个拉取请求,它只包含对 file1、file2 和 file3 的更改(即功能的更新)。

我使用的工作流程:

git clone https://github.com/eghm/project.git project-eghm-clean
cd project-eghm-clean
git remote add upstream https://github.com/forkeduser/project.git
git fetch upstream
git merge upstream/master
git push
git branch featurebranch
git checkout featurebranch
#edit files: file1, file2, file3
git add file1
git add file2
git add file3
git commit -m 'updates for feature'
git push --set-upstream origin featurebranch
Run Code Online (Sandbox Code Playgroud)

然后在 github 上我转到我的分叉存储库,选择分支:featurebranch,然后单击拉取请求。该请求包括我通过同步 fork 进行的合并:

拉取请求包括同步合并

我将来如何避免这种情况?

mkr*_*fky 5

您应该只git rebase针对您发出拉取请求的分支。例如:

git rebase origin/master
Run Code Online (Sandbox Code Playgroud)

由于这会改变您分支的历史记录,因此您最好在新分支中执行此变基。所以:

git checkout -b new_rebased_branch
git rebase origin/master
Run Code Online (Sandbox Code Playgroud)

为了将来参考,如果您不希望在拉取请求中合并提交,您应该尝试通过 rebase 而不是合并来更新您的分支。同样,我总是建议检查一个单独的分支来执行此操作,因为变基会更改您的提交历史,您可能希望保留原始提交历史的备份。