在开源开发中,forking(派生)和 cloning(克隆) 是具有不同用途的截然不同的操作。 Cloning(克隆) 创建一个代码仓库的本地副本,包括其整个历史记录和分支,允许你直接处理代码。 另一方面,Forking(派生) 在你的账户下创建代码仓库的服务器端副本,从而实现独立的开发和贡献工作流程。 虽然 cloning(克隆) 是关于本地访问,但 forking(派生) 是关于创建用于协作或实验的独立项目实例。
Clone(克隆) 是一次性操作,用于将代码仓库从远程服务器(如 GitHub)复制到你的本地计算机。 例如,运行 git clone https://github.com/user/project.git
会下载项目的代码、提交历史记录和分支。 如果你有写入权限,这对于进行本地编辑、测试更改或做出贡献至关重要。 克隆会维护与原始代码仓库的连接(通过 origin
远程),从而允许你使用 git pull
获取更新。 但是,除非你有权限,否则你不能直接修改原始代码仓库,而这正是派生发挥作用的地方。
Forking(派生) 在你自己的账户中(例如在 GitHub 上)创建代码仓库的副本。 例如,单击项目页面上的“Fork”会在你的用户名下创建一个独立的版本。 这使你可以自由地修改代码,而不会影响原始项目。 要贡献回原来的项目,你需要在本地克隆你的派生,进行更改,将它们推送到你的派生,然后打开一个pull request (PR) 以提议将你的更改合并到原始代码仓库中。 当你缺乏对原始项目的写入权限或想要独立进行实验时,派生尤其有用。 例如,开发人员可能会派生一个库,在其派生中添加一个新功能,并在他们自己的项目中使用它,同时等待原始维护者审查他们的 PR。