出于保护自己的劳动成果,或是添加免责声明方面的考虑,开源一个项目的时候通常需要选择一个开源许可。项目一开始如果没有考虑开源,在准备开源的时候,务必添加一个开源许可。
但是如果仅仅是往代码里添加开源许可证并 commit,还是会产生一些问题的,因为在这个 commit 之前的代码是没有开源协议的。现有的开源协议能否保护以前的代码,我不太清楚。但是一个开源项目如果更换开源许可的话,那么旧许可只对旧代码有效,新许可对新代码有效。
为了规避此类风险,最好把开源许可放在版本记录的最前面,也就是最开始的 commit 中,刚好 github 等代码托管平台提供了创建项目时添加开源许可的功能,可以加以利用,操作步骤如下:
-
首先在 github 上创建一个项目,选择一个开源协议
- 然后远程仓库中就有了一个
Initial commit
- 在本地仓库中添加远程仓库
git remote add origin <url>
- 拉取远程的 master 分支到一个临时分支
git fetch origin master:temp
- 将本地的 master 分支 rebase 到这个临时分支
git rebase temp
- 这时本地的 master 分支的第一个 commit 就是远程仓库中的
Initial commit
了,将本地分支推送到远程git push origin master
- 临时分支没用了,可以删除
git branch -d temp
网友评论