更改先前提交的作者姓名:快进推送被拒绝

时间:2011-08-28 13:03:18

标签: git github

我最近在GitHub上开了一个回购。我是Git的新手。和新手一样,我承诺使用默认名称和电子邮件,我在最好的noob传统中发现了五次提交为时已晚。现在开始有趣了,因为我开始搜索有关如何更改作者和信息的信息。这些提交的提交者名称。精细。我基本上找到了以下信息和很多副本:

  1. http://help.github.com/change-author-info/

  2. Delete commits from a branch in Git

  3. How to remove selected commit log entries from a Git repository while keeping their changes?

  4. Change the author and committer name and e-mail of multiple commits in Git

  5. Change commit author at one specific commit

  6. Change first commit of project with Git?

  7. Could I change my name and surname in all previous commits?

  8. 这个问题似乎并不少见。我只能说没有一个解决方案有效。其中一半是同一git filter-branch -f --env-filter脚本的变体。我尝试多次处理该脚本。问题是在应用脚本后,我无法推送。 “快进推动被拒绝”或类似的东西。好吧,唯一的方法就是拉。拉动后,所有旧信息再次出现+带有新信息的新分支。我已经坐在这里有四个分支,以最恶劣的方式合并,都包含不同作者姓名的相同信息,包括我想删除的那个。

    可以简短地删除它,我也尝试删除选定的提交,这会产生我无法解决的令人毛骨悚然的冲突(如何???),并使用正确的作者将一些提交压缩为较新的提交信息,导致当前项目状态被破坏。更好的是,我在执行git rebase -i后有时会遇到分段错误,我在此通知:http://lists-archives.org/git/729800-rebase-i-segmentation-fault-and-another-problem.html完全合乎逻辑。 (谢天谢地)唯一有效的是git rebase --abort,它多次保存了我的屁股。

    我希望我的挫败感不会被击退,而是逗你并激励你帮助我。我想:

    • 最后删除所述作者信息

    • 奖励:摆脱包含相同信息的所有分支。

    但是我对第一个也很满意,如果在没有破坏当前状态的情况下删除过去的分支的障碍对于一个git新手来说太过分了。提前致谢。

2 个答案:

答案 0 :(得分:5)

  

问题是在应用脚本后,我无法推送。 “快进推动被拒绝”或类似的东西。

如果您尝试修改历史记录,则无法避免此问题。 Git拒绝推送,因为它导致数据丢失;在这种情况下,数据是旧作者。您只需要git push使用--force标记即可告诉您确定自己在做什么。

Git中的Messes可能很难解决。如果master是一团糟,我通常会用git checkout HEAD~回溯历史,直到我回到事情并不可怕的时候。然后我git branch --force master重置master到那一点。最后,我用git branch -D badBranch删除了所有混乱的分支。

小心。

答案 1 :(得分:1)

如果还没有人关注您的回购,那么只需修改您的本地回购并强制推送到GitHub。接受任何尴尬。我一直在(重新)以类似的方式建立一个回购周。

如果它是一个学生项目并且讲师已经把它拉了下来,那就更难了 - 只是为了让你欣赏好管理员的价值; - )