如何在我之前的所有提交中对文件进行更改?

时间:2019-05-11 10:07:32

标签: git

我有一个私人存储库。我正在使用MIT许可证。但是现在我想在将其公开之前将其更改为GPL3。问题是,如果我在提交中更改许可证并将其推送,从技术上讲,您可以根据MIT许可证(我不想要)使用以前的提交。

是否有办法在所有先前的提交中更改许可证?我听说过要在git rebase中为每个提交单独进行此操作,但是需要一种更好的方法!

2 个答案:

答案 0 :(得分:2)

如果您只想更改一个文件,请执行并提交。

然后,您可以使用git rebase -i重新排列提交。特别是,您可以将对许可证文件的更改移到历史记录的开头,就像它一直在其中一样。

答案 1 :(得分:1)

根据法律确定性原则,您不能追溯更改合同。因此,根据MIT许可证的条款,直到被您更改为GPL的修订版本为止,绝不会被迫按照MIT许可证下载和使用您的软件的人停止使用您的软件

为了防止在MIT许可下进一步克隆您的软件,我将设置一个新的存储库并将当前状态用作初始提交,同时删除旧的存储库。

另一方面-谁想要真正的代码更旧的版本? 就我个人而言,我只需更改许可证,将新的标头添加到文件中,当前版本的每个用户都必须在GPL下使用它。

IANAL,但是取决于我们正在谈论的软件类型,尤其是如果它是任何类型的服务器,都可以更改为AGPL