Gol*_*den 3 git github git-rewrite-history
我现在有一个私有的 GitHub 存储库,它已经存在了几年。在README.md文件中有一个许可证,它不再准确。
现在我想把这个私人回购变成一个公共回购,拥有固定的许可证。无论如何,所有旧的提交仍然包含旧的(错误的)许可证。
我怎么能解决这个问题?我的第一个想法是将存储库压缩为单个提交并销毁其他所有内容,但也许有更好的方法来实现我想要的。
正如您从另一个问题中看到的那样,保留历史记录并不重要,但 OTOH 也不会受到伤害。
真正令人痛苦的是使用错误的许可证进行旧提交。
有任何想法吗?
PS:我想确保没有人能够获得旧的提交,即使他们知道提交的 ID。所以,解决这个问题也要注意更新远程仓库,比如GitHub。
您可以使用它filter-branch来执行此操作。首先编写一个小脚本,为给定的提交重写树。例如,以下内容仅在文件存在时才更改something为文件。something elseREADME.md
if [ -f README.md ]; then
sed 's/something/something else/g' README.md > tmp
mv tmp README.md
fi
Run Code Online (Sandbox Code Playgroud)
将其另存为change.sh,然后运行以下命令
git filter-branch --tree-filter "/bin/bash $(pwd)/change.sh" HEAD
Run Code Online (Sandbox Code Playgroud)
这将重写从 HEAD 返回的所有提交。如果您犯了错误,您可以使用 返回到较早的树并重git reset试。
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |