gpt4 book ai didi

git - 有人派我去 pull 他的变化。但是我无法将我的名字添加到该提交中

转载 作者:太空狗 更新时间:2023-10-29 13:04:23 32 4
gpt4 key购买 nike

有人 fork 了我的项目并进行了一些更改。都好。他的所有更改都在一次提交中。现在他让我 merge 他的更改。项目托管在 github 上。

我遵循了 http://github.com/guides/pull-requests 中提到的指南这就是我所做的

git pull git://github.com/defunkt/grit.git master

但是,由于该命令现在 gitlog 说另一个人进行了提交。我见过其他人提交并且一个人验证的地方。由于这是我的项目,我如何将我的名字添加到验证列表中。

问题编号:2

他的评论中有一个错字。我还想修复提交中应该带有他和我的名字的错字。

更新:

我正在寻找一种方法来签署这样的提交。
http://github.com/rails/rails/commit/639e044298eed903566086d297ae51a535082e73

最佳答案

作者/提交者/确认/签字

每个项目都定义了如何记录补丁审查。 Git 仅直接支持两个预定义的身份字段:作者和提交者。两者都不完全适合标记评论/确认。 Git 确实对“Signed-off-by:”行有额外的支持,但这些只是提交消息中的常规文本(与作者和提交者不同,它们由 Git 管理和分配含义)。

与提交消息的所有部分一样,“Signed-off-by:”的含义由每个项目来定义。在 Git 项目中,“Signed-off-by:”行的意思类似于“我证明此代码与此项目的许可证兼容”(参见 “Developer's Certificate of Origin” in Git's SubmittingPatches document)。在 Git 项目中,“Acked-by:”行的意思是“我已经审查了这个更改,看起来很正常”。

Git 项目中典型的补丁流程是贡献者生成带有 git format-patch -s 的签名补丁。并将它们发送到项目邮件列表,在那里他们收集讨论和确认(如有必要)。一旦补丁准备好应用,维护者在添加他自己的“签名者:”后应用它。因此,维护者始终是提交者(除了在某些子系统中,通过子系统维护者的 merge pull 入提交)但原始贡献者仍然是作者。此工作流程在其他项目中可能有意义,也可能没有意义。

因此,您在 GitHub 上的示例提交中的“签署人:”只是提交消息末尾的文本。它的确切含义是项目分配给这些线路的任何含义。为该提交显示的附加身份(在 GitHub View 中标记为“(提交者)”)是由于提交者与作者不同。当您修改提交(例如分支的提示或在 rebase 期间)或应用包含与您配置的身份不同的“From:” header 的补丁时,就会发生这种情况。修改其他人的提交以添加签名或确认行(或修复提交消息中的错字)将足以更改提交者。

一般来说,您不应该担心将您的身份 push 提交者领域。您可能会合理地关注以某种方式承认提交中包含的更改(例如说“我审查了这个”或“我批准了这个”)。您执行此操作的方式取决于相关项目的习俗和政策。通常这样的确认是通过在提交消息中添加“页脚”行来完成的。

添加确认的方法

如果“Signed-off-by:”在你的项目中作为确认行服务器,你可以通过使用 git commit --amend -s 修改提交来轻松添加它们。 .否则,它将涉及修改提交消息以包含适合您项目的任何能指。

完全保留贡献的历史

如果在您的情况下保留贡献者的原始历史记录至关重要,那么您可能应该使用 git pull --no-ff并将您的“确认”添加到结果 merge 提交的提交消息中。由于您无法重写,因此您将不得不忍受任何提交消息拼写错误。对于内容拼写错误,您或原始贡献者可以在 merge 之前添加修复拼写错误的提交,或者您可以在 merge 之后添加修复。

merge 后进行内容修复:

git checkout <your-branch>
git pull --no-ff --no-commit <repo> <contributor's-branch>
git commit # add your "Ack", commit the merge
# fix content typo and stage it
git commit

完全保留贡献的历史(顶部有一些额外的变化)

在 merge 之前进行内容修复(或让贡献者在他的存储库中进行修复,然后按上述方式 pull ,跳过最后的修复步骤):
git fetch <repo> <contributor's-branch>:from-contributor
git checkout from-contributor
# fix content typo and stage it
git commit
git checkout <your-branch>
git merge --no-ff --no-commit from-contributor
git commit # add your Ack, commit the merge

您将成为 merge 提交和任何修复提交的作者和提交者。来自贡献者提交的作者和提交者将保持不变。

重写一些贡献的历史(但保留原始分支点)

如果可以重写历史记录,那么您可以创建一个包含贡献者提交的本地分支,使用 git rebase -i添加您的“确认”并修复拼写错误,然后将其 merge 到您的主分支中。
git fetch <repo> <contributor's-branch>:from-contributor
git checkout from-contributor
git rebase -i HEAD~<N> # N is however many commits you have to go back to fix the typo

git checkout <your-branch>
git merge --no-ff --no-commit from-contributor
git commit # add your Ack, commit the merge

而不是最后的 git checkout <your-branch> && git merge --no-ff --no-commit && git commit ,您可以在 git rebase -i 期间将您的确认添加到相关提交中步骤然后使用 git checkout <your-branch> && git merge from-contributor ,如果 <your-branch> 的提示可能会快进是 from-contributor的祖先.

您将成为任何更改提交的提交者。除非您使用 git commit --reset-author,否则现有提交的作者将保持不变。 .您将成为任何新提交( merge 提交和修复)的作者和提交者。

重写任何或所有贡献的历史

如果您不关心保留贡献者分支的分支点,那么您可以这样做:
git checkout <your-branch>
git pull --rebase <repo> <contributor's-branch>
git rebase -i HEAD~<N> # fix-up typo, add Ack

Author 和 Committer 将与上述 rebase+merge 场景相同。

确认/修复单个提交

如果您只是处理单个提交,则 git rebase -i HEAD~<N>以上步骤可以是 git commit --amend反而。

关于git - 有人派我去 pull 他的变化。但是我无法将我的名字添加到该提交中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348911/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com