为什么 Github 在每个 Pull Request 中显示我之前的所有提交

Why is Github showing all my previous commits in every Pull Request

我不是最好的 Git 用户,每当我创建 PR 时都会遇到问题。基本上,当我做一个 PR 时,我会看到一个很大的列表,上面列出了我以前所有的提交,包括我刚刚提交的(我想合并到 Master 分支的那个)。我执行的流程如下:

首先我 fork 了我们 Master 分支的副本,然后

git clone [local copy] 

然后我创建一个遥控器

git remote add upstream [main repo url]

然后每次我做出更改时我都想添加到我的 PR 中:

git add [file1] [file2 ] ...ect

然后提交:

git commit -m 'blah blah blah'

最后推送到原点:

git push origin master

在此之后,我在 Github 上创建了一个 PR,它显示了所有以前的提交。有没有办法不列出所有这些,只显示我最近的提交?它显示了很久以前合并到上游并与之同步的提交。合并不必 select 特定的提交而只需要列出的提交就好了。

谢谢!

假设 PR 表示 Pull Request,这正是您应该看到的 - 自上次克隆存储库以来的所有提交。一般来说,保留这些提交是个好主意,因为它们会告诉所有事情发生了什么变化以及发生了什么变化。

但是,如果这是 "over committing" 的情况,是由于每当发生变化而不是在任务或问题已解决时提交,那么您当然可以 squash/rebase 将您的提交合并为一个.详情见下文

您的工作流程似乎不对。您可以通过两种方式做出贡献:

  1. 您对上游存储库具有写入权限。然后你应该简单地克隆上游存储库,签出一个新分支 git checkout -b fix/my-fix 并在那里提交你的更改。完成后,将新分支推送到上游 git push origin fix/my-fix 并在该 repo 中打开一个 PR。

  2. 您没有写入权限,即您不能将任何分支推送到上游仓库。首先,您必须创建存储库的私有分支,然后将您的分支克隆到您的计算机。现在您还应该为您的修复或功能添加创建一个新分支。一旦你有了它,你将分支推送到你的私人仓库。这部分有点混乱,但是 github 会让它起作用。然后,您可以从分叉的回购中打开原始上游回购中的 PR。为此,导航到您的 github 配置文件和您的存储库,并使用您的新分支启动 PR。您应该能够选择上游主节点作为新分支的合并目标。

如果你在打开一个新的 PR 时仍然看到所有旧的提交,那么你的分支已经分叉,有人强行将更改推送到 master 或类似的东西。您可以检查两个分支 branch_1branch_2git merge-base branch_1 branch_2 的共同祖先。然后你可以使用交互式变基 git rebase-i 将你的分支放在另一个分支之上并删除所有不必要的提交。