修复未计入的Github提交

时间:2017-11-13 14:07:57

标签: git github

我在不同时间向不同的客户提交了一些github提交。现在我看到,在我的个人资料中,有些人不会出现。当我去检查提交时,我可以在那里看到它,但没有我的个人资料图片。据我所知,这是因为我当地的客户配置。

有没有办法可以编辑过去的提交或者在我的个人资料中显示错误的配置?

编辑:我可以在github上查看我的提交。但我用我的Mac制作的个人资料图片和我用我的windows pc制作的,没有个人资料图片。现在我知道,当我修复它时,我的未来提交将被计算在内。我问的是过去的情况呢?

2 个答案:

答案 0 :(得分:2)

Github根据您的电子邮件地址识别您的提交。 Add your second email address to your account并且应该计算一切。

答案 1 :(得分:1)

作者和提交者身份是提交的一个组成部分;所以要修复现有的提交,你必须重新定义它们(也就是说,用具有正确元数据的新提交替换它们)。

如果其他任何人可能fetch提交了现在存在的提交(或者更确切地说,可能fetch编辑了任何可以达到提交的引用(现在它已存在),那么您需要与所有这些用户协调。如果有许多其他用户,或者特别是如果有用户沟通不畅并且可能不会立即意识到正在发生什么,那么它可能不值得引起头痛。此外,基于提交的新工作越多,编辑它的成本就越高。

如果你理解了上述内容并仍想修复它,那么最好的程序是

1)让每个人都将他们的所有工作推向遥控器 2)让每个人都放弃他们的克隆 3)在本地修复提交 4)强制推动固定到遥控器 5)每个人都可以重新克隆

如果这不切实际,那么您可以参考git rebase文档中的“从上游rebase中恢复”部分,以获取有关每个开发人员如何在不丢弃/重新克隆的情况下恢复的提示。

至于如何重写本身......这又取决于可以到达你想要修复的提交的“其他”提交(和引用)的拓扑。在最简单的情况下,如果你有

A -- x1 -- B -- x2 -- C <--(master)

没有其他引用,没有合并,没有人已经在可以到达x1的分支上本地工作,那么你可以

git rebase -i --root master

您将获得一个TODO列表,其中包含每个提交的条目;找到x1x2并将其命令从pick更改为edit。每次提交标记为edit后,git将暂停rebase。然后你可以说

git commit --amend --reset-author

(假设您已修复本地配置)。

如果有多个分支和/或合并,事情会变得更加复杂。可能包含冲突解决方案(或“恶意”更改)的合并是一个特殊问题。有许多变体,因此如果给出上述信息,您需要针对特定​​情况的额外帮助,那么我需要更多信息(如示例提交/参考图)。