【问题标题】:What to do when your commit fails GitHub checks?当您的提交未通过 GitHub 检查时该怎么办?
【发布时间】:2020-11-27 09:52:39
【问题描述】:

好的,我刚刚了解了单元测试、GitHub 与 CircleCI 的检查和拉取请求。我在尝试测试我对所有内容的理解时遇到了一个问题:

  1. 我在本地有一个存储库,它设置为将更改推送到我的 GitHub 上的存储库。
  2. 我编写了一些通过 pytest 本地测试运行程序的基本测试。
  3. 我做了一些简单的更改来测试所有内容,提交并推送更改。
  4. 我去 GitHub 发现我没有通过我在 CircleCI YAML 文件中定义的测试,因为我的虚拟环境中没有安装 flake8(我不小心全局安装了它)。
  5. 我返回 PyCharm 并在我的 venv 中安装 flake8。
  6. 我更新了我的 requirements.txt 以反映安装。
  7. ???

现在,我的问题是:当检查失败时,在解决问题后“更新”拉取请求的最佳做法是什么。我是否只是做出一个新的提交来修复它并开始一个新的拉取请求?或者,我是否找到一种方法来恢复旧提交以包含有效的新版本?

【问题讨论】:

    标签: git github continuous-integration circleci


    【解决方案1】:

    拉取请求是一个草稿分支。在合并到目标分支之前,它并没有真正发布。只要最终版本符合预期,您就可以做任何您想做的事情。它的提交历史可能看起来很难看,但它会记录您为目标所做的事情。即使是草稿,人们也可能更喜欢更好看的历史。在这种情况下,可以使用git rebase -igit reset --hardgit commit --amend 甚至git filter-branch 来重写一个简洁漂亮的历史记录,然后使用git push -f 来更新拉取请求。当然,如果其他人也在处理同一个拉取请求,请务必在您想要强制更新拉取请求之前通知他们。另一方面,如果它被 squash-merged 到目标分支,它的历史,不管它是丑的还是好看的,都不会被引入到目标分支。

    【讨论】:

    • 'squash-merge' 是什么意思?
    • @rocksNwaves squash-merge 是一个合并选项,相当于git merge --squash && git commit。在 Github 和 Gitlab 中,当您接受拉取请求时,您可以选择 squash-merge,以便拉取请求对目标分支的新提交合并为一个提交,并将该提交应用于目标分支。拉取请求的历史不会与目标分支合并,只有更改合并。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2011-03-18
    • 2012-05-11
    • 2021-05-11
    相关资源
    最近更新 更多