【问题标题】:How do I edit the initial commit in a github repository?如何在 github 存储库中编辑初始提交?
【发布时间】:2011-01-05 04:17:18
【问题描述】:

我正在开发一个我 fork 的存储库,在该存储库中作者采用脏路径并将他的所有依赖项填充到初始提交的 lib/ 目录中。通常,如果它不是初始提交,我只会进行交互式变基并删除整个提交(如果这就是他所做的一切)。但是,我不知道如何编辑/删除初始提交。有没有办法可以编辑初始提交并删除 lib 目录而不触及它的其余部分?

编辑

我在这里偶然发现了答案:Can I remove the initial commit from a Git repo? 在所选答案中。这就是我没有更彻底地搜索的结果。

【问题讨论】:

    标签: git git-rebase


    【解决方案1】:
    $ git filter-branch --parent-filter \
      'test $GIT_COMMIT = SECOND && echo "" || cat' \
      --tag-name-filter cat -- --all
    

    其中 SECOND 是您希望成为新根的提交的 SHA-1。

    以上假设所有分支都使用相同的第一次和第二次提交。如果没有,您需要在父过滤器中泛化测试。

    请注意,这是一项极端措施:它将重写您的整个历史记录,并阻止您关注作者的回购。此外,如果您已将您的 repo 推送到远程,您需要使用 git push -f 破坏那些。

    【讨论】:

    • 警告:参考 'refs/heads/master' 未更改 警告:参考 'refs/remotes/origin/master' 未更改 警告:参考 'refs/remotes/origin/master' 未更改是什么它给了我。
    • 确认!您想重写 second 提交的父母,而不是第一次。查看更新的答案,对于错误的开始,我们深表歉意。
    • 在您编辑这篇文章之前,我想出了一种不同的方法(在我的编辑中显示)。我将假设这确实有效(我完全相信你
    • echo <SHA of second commit> 0000000000000000000000000000000000000000 > .git/info/grafts; git filter-branch 会不会更短?
    猜你喜欢
    • 2012-06-03
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 2018-02-10
    • 2013-09-23
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多