【问题标题】:Why is Github showing all my previous commits in every Pull Request为什么 Github 会在每个 Pull Request 中显示我之前的所有提交
【发布时间】:2017-06-12 12:53:12
【问题描述】:

我不是最好的 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,其中显示了之前的所有提交。有没有办法不列出所有这些而只显示我最近的提交?它显示了合并到上游并与之同步的提交。如果合并不必选择特定的提交而只选择列出的提交,那就太好了。

谢谢!

【问题讨论】:

  • 您可以将所有更改保留在阶段,并在准备好 PR 后提交所有内容
  • 这就是 PR 的行为方式。你想要个人提交吗?然后为每个提交创建单独的 PR。 PR 代表您的分叉仓库的 main brnach 中未反映在主仓库的 main 分支中的所有更改

标签: git github pull-request


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    但是,如果这是一种“过度提交”的情况,因为每当发生更改而不是在解决任务或问题时提交,那么您当然可以将您的提交压缩/变基为一个。详情见下文

    【讨论】:

    • 这怎么可能?它不应该只显示基础和您想要拉入的内容之间的差异吗?之前已经合并的提交不应该显示出来。
    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2021-11-11
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多