【问题标题】:GitHub actions commit attributionGitHub 操作提交归因
【发布时间】:2022-01-18 14:28:02
【问题描述】:

请不要问为什么,但我有 2 个 GitHub 帐户。我会打电话给这两个帐户 GH1 和 GH2。

存储库:存储库是私有的,它在一个组织中,并且 该组织的成员只有 GH1 和 GH2。这是一个我不想链接到我的主 GH1 的存储库,这就是为什么我希望该存储库上没有 GH1 的痕迹,以及为什么我只将它作为 GH2 推送。

我正在使用该存储库来测试工作流,然后再将它们部署到组织的公共存储库之一。

当我在本地推送到 repo 时(如 git push),我的提交归因于 GH2,但是当我检查工作流运行时,它说它是由 GH1 推送的。如何确保提交始终归因于 GH2?

澄清: 提交归因于 GH2,错误归因于 GH1 在 GitHub Actions 工作流运行中。

(已使用检查元素进行修改以编辑敏感信息。)

【问题讨论】:

  • 推送到 repo 时如何进行身份验证?有 PAT?您使用的是用户 GH1 的 PAT 吗?
  • 我只是执行了一个git push,在本地存储库.git/config 中有GH2 作者信息。我还设置了 GitHub CLI 和 SSH。
  • 您使用的是用户 GH1 的 SSH 凭据吗?还是您的 GitHub CLI 以某种方式被认证为 GH1?
  • @riQQ 我应该改为使用 SSH 推送吗?如,git@github.com:GH2/user/repo.git(或者我的 URL 错误)
  • 请编辑您的帖子以在您的存储库中包含git remote -v 的输出。推送时是否提示输入用户名和密码?

标签: git github github-actions


【解决方案1】:

过去在 Stack Overflow 上有两种解决方案可以解决您的问题。

  1. 为了使未来的提交使用正确的用户:
  1. 要更改过去的提交以将用户与另一个用户交换:

(这是这个问题的一部分:How to amend several commits in Git to change author

第 1 部分:

设置你的 git 作者设置。例如:

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

然后为给定 SHA 之后的所有提交重置作者

git rebase -i YOUR_SHA -x "git commit --amend --reset-author -CHEAD"

这将弹出您的编辑器以确认更改。您需要在这里做的就是保存并退出,它将通过每次提交并运行 -x 标志中指定的命令。

您还可以在保持原始时间戳的同时更改作者:

git rebase -i YOUR_SHA -x "git commit --amend --author 'New Name <new_address@example.com>' -CHEAD"

第 2 部分:

git filter-branch --env-filter 'if [ "$GIT_AUTHOR_EMAIL" = "incorrect@email" ]; then
     GIT_AUTHOR_EMAIL=correct@email;
     GIT_AUTHOR_NAME="Correct Name";
     GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL;
     GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; fi' -- --all

我会阅读链接中的详细信息,以确保您在执行操作之前了解自己在做什么。

【讨论】:

  • 我已经设置了 git 作者设置,并且我作为 GH2 提交的存储库是新鲜的,没有来自 GH1 的活动。基本上,错误的归因出现在显示工作流运行的操作页面中,特别是在:“[WORKFLOW] #0: Commit [SHA] push by [USERNAME]”
  • 查看来自stackoverflow.com/a/25815116/7058266 的cmets,其中包括边缘情况。您可以编辑那些过去的提交。
  • 你明白我的意思吗?它在显示工作流运行的操作页面中,那里的解决方案似乎对我的需要没有帮助。
【解决方案2】:

Git : fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists

尝试使用 SSH 推送。我会为 GH1 和 GH2 创建 2 个密钥,然后将我的 SSH 配置编辑为如下内容:

Host github.com-GH2
        HostName github.com
        User GH2
        IdentityFile ~/.ssh/github_GH2

在我希望归为 GH2 的存储库中,我可以简单地运行以下 git 命令:

git remote set-url origin git@github.com-GH2:user/repo.git

我使用该 SSH url 集进行了推送,我很自豪地说 GitHub Actions 工作流运行不再将提交归因于 GH1(见下面的屏幕截图)。

【讨论】:

    猜你喜欢
    • 2021-09-04
    • 2022-11-05
    • 2022-08-21
    • 1970-01-01
    • 2021-10-03
    • 2010-12-13
    • 2023-01-07
    • 1970-01-01
    • 2022-08-17
    相关资源
    最近更新 更多