当前位置:  开发笔记 > 编程语言 > 正文

有人派我去改变它.但是我无法将我的名字添加到该提交中

如何解决《有人派我去改变它.但是我无法将我的名字添加到该提交中》经验,为你挑选了1个好方法。

有人分叉了我的项目并进行了一些更改.都好.他的所有更改都在一次提交中.现在他让我合并他的变化.项目托管在github上.

我遵循http://github.com/guides/pull-requests中提到的指导原则,这就是我所做的

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

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

问题2:2

他的评论中有一个错字.我还想修复那个应该承担他和我的名字的提交中的拼写错误.

更新:

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



1> Chris Johnse..:
作者/修订者/的Ack /签收

每个项目都定义了如何记录补丁的评论.Git只直接支持两个预定义的身份字段:Author和Committer.两者都不适合标记评论/确认.Git确实支持"Signed-off-by:"行,但这些只是提交消息中的常规文本(与Author和Committer不同,它由Git管理并赋值.)

与提交消息的所有部分一样,"Signed-off-by:"的含义取决于每个要定义的项目.在Git项目,"参团的off-by:"行的意思是像"我保证这个代码是这个项目的许可证兼容"(见在Git的SubmittingPatches文件"原产开发者证书").在Git项目中,"Acked-by:"行意味着"我已经审查了这个变化,看起来很健全".

Git项目中的典型补丁流是贡献者生成已签名的补丁,git format-patch -s并将其发送到项目邮件列表,在那里他们收集讨论和Acks(如果需要).一旦准备好应用补丁,维护者在添加他自己的"Signed-off-by:"之后应用它.因此,维护者始终是提交者(除了在一些子系统中,提交是从子系统维护者的合并中提取的),但原始贡献者仍然是作者.此工作流程在其他项目中可能有意义,也可能没有用.

因此,GitHub中的示例提交中的"Signed-off-by:"只是提交消息末尾的文本.它的确切含义是项目分配给这些线的意义.为该提交显示的附加标识(在GitHub视图中标记为"(committer)")是由于Committer与Author不同.当您修改提交(例如分支的提示或在rebase期间)或应用包含与您配置的标识不同的"From:"标头的修补程序时,会发生这种情况.修改其他人的提交添加签名或确认行(或修复提交消息中的拼写错误)将足以更改提交者.

通常,您不应该将您的身份推送到Committer字段.您可能会合理地关注以某种方式承认提交中包含的更改(例如,说"我已审核此"或"我批准了此").您这样做的方式取决于相关项目的习惯和政策.通常通过在提交消息中添加"页脚"行来完成此类确认.

添加Acks的方法

如果"Signed-off-by:"将服务器作为项目中的Ack排队,则可以通过修改提交轻松添加它们git commit --amend -s.否则,它将涉及修改提交消息以包括适合您的项目的任何指示符.

完全保留贡献的历史

如果保留贡献者的原始历史记录对您的情况至关重要,那么您应该使用git pull --no-ff并将"Ack"添加到生成的合并提交的提交消息中.由于您无法重写,您将不得不忍受任何提交消息拼写错误.对于内容拼写错误,您或原始贡献者可以在合并之前添加修复拼写错误的提交,或者您可以在合并后添加修订.

合并后的内容修复:

git checkout 
git pull --no-ff --no-commit  
git commit # add your "Ack", commit the merge
# fix content typo and stage it
git commit

完全保留贡献的历史记录(顶部有一些额外的更改)

在合并之前进行内容修复(或者让贡献者在他的存储库中执行此操作,然后按上述方式进行操作,跳过最后的修复步骤):

git fetch  :from-contributor
git checkout from-contributor
# fix content typo and stage it
git commit
git checkout 
git merge --no-ff --no-commit from-contributor
git commit # add your Ack, commit the merge

您将成为合并提交的作者和提交者以及任何修复提交.贡献者提交的作者和指定者将保持不变.

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

如果可以重写历史记录,那么您可以创建一个包含您的贡献者提交的本地分支,git rebase -i用于添加"Ack"并修复拼写错误,然后将其合并到主分支中.

git fetch  :from-contributor
git checkout from-contributor
git rebase -i HEAD~ # N is however many commits you have to go back to fix the typo

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

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

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

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

如果您不关心保留贡献者分支的分支点,那么您可以这样做:

git checkout 
git pull --rebase  
git rebase -i HEAD~ # fix-up typo, add Ack

作者和提交者将与上述rebase + merge场景相同.

Acking/Fixing一次提交

如果您只是处理单个提交,则git rebase -i HEAD~可以git commit --amend改为执行上述步骤.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有