git - 如何编辑 github 存储库中的初始提交?

标签 git git-rebase

我正在处理一个我 fork 的存储库,作者在其中采用了肮脏的路径,并在初始提交时将他所有的依赖项都塞进了 lib/目录中。通常,如果不是初始提交,我只会进行交互式 rebase 并删除整个提交(如果这就是他所做的全部)。但是,我不知道如何编辑/删除初始提交。有没有一种方法可以编辑初始提交并删除 lib 目录而不触及其余部分?

编辑

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

最佳答案

$ git filter-branch --parent-filter \
  'test $GIT_COMMIT = SECOND && echo "" || cat' \
  --tag-name-filter cat -- --all

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

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

请注意,这是一项严厉的措施:它将重写您的整个历史记录,并阻止您关注作者的 repo 协议(protocol)。此外,如果您已将存储库推送到远程,则需要使用 git push -f 破坏那些。

关于git - 如何编辑 github 存储库中的初始提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066006/

相关文章:

git-archive 一个子目录 --

git - "check out code"在行尾的 git 文档中意味着什么?

windows - 混帐庆典 : how to change where the MinTTY configuration file is stored?

git pull --rebase 因冲突而失败,但 git push 有效

git - 在一系列 git 提交中提取对单个文件的更改

git - 如何使用散列而不是分支名称进行 git rebase?

混帐 rebase 。我如何使用它来折叠大量的古代提交

git - 添加 git 子模块时为 "You are on a branch yet to be born"

c# - File.WriteAllText 正在根据 Git 更改我的文件的开头

GIT - 更改早期提交中的代码,以便它反射(reflect)在之后的提交中