# multiverse **Repository Path**: B24D/multiverse ## Basic Information - **Project Name**: multiverse - **Description**: 基于IPFS及libp2p的去中心化版本控制及代码托管工具 - **Primary Language**: Go - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-04-07 - **Last Updated**: 2024-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 简介 Multiverse是一款基于IPFS和Libp2p构建的去中心化版本控制及代码托管工具,依靠P2P网络在节点间交換数据,将数据所有权从服务提供商转移至用户 ### 安装 需要 ` Go 1.16` 或更高版本 ```bash $ git clone gitee.com/B24D/multiverse.git $ cd multiverse $ make install ``` 启动节点,在单独的终端窗口输入以下命令并保持该终端持续运行 ```bash $ multi daemon ``` 看到项目标识如下,并获取到PeerID,说明节点已启动成功 ### 创建本地仓库 创建空目录并初始化 ```bash $ mkdir my_project $ cd my_project $ multi init ``` ### 查看修改 在工作区中进行一些修改后,可使用status查看修改情况 默认工作区中所有文件均被追踪 ```bash $ multi status ``` ### 提交修改 完成修改后,可使用commit提交修改至本地仓库,并可附加相关信息来描述本次提交所涉及的修改 ```bash $ multi commit --message "add initial code" ``` ### 创建远程仓库 创建远程仓库来共享代码 ```bash $ multi repo create my_project ``` 仓库创建成功将打印其远程路径如下 ```bash 12D3KooWPU2rbW4k1j1vRrdDg5DgJ1FBoFZ7ABYWXFzmNngjuEWQ/my_project ``` 远程路径是仓库在Multiverse上的唯一标识,由你的PeerID和远程仓库名组成 ### 仓库分叉 使用repo fork复制一个远程仓库 ```bash $ multi repo fork --name fork_repo 12D3KooWPU2rbW4k1j1vRrdDg5DgJ1FBoFZ7ABYWXFzmNngjuEWQ/my_project ``` ### 查看所有仓库 使用repo list查看当前的全部仓库 ```bash $ multi repo list ``` ### 推送至远程仓库 要推送修改至远程仓库,首先创建一个remote指向远程仓库 ```bash # 使用你的远程路径替换 $ multi remote create origin 12D3KooWPU2rbW4k1j1vRrdDg5DgJ1FBoFZ7ABYWXFzmNngjuEWQ/my_project ``` 设置分支remote ```bash $ multi branch set remote origin ``` 推送修改即可 ```bash $ multi push ``` ### 拉取远程 使用pull命令拉取远程仓库或分支至本地 ```bash $ multi pull --remote 12D3KooWPU2rbW4k1j1vRrdDg5DgJ1FBoFZ7ABYWXFzmNngjuEWQ/fork_repo ``` ### 分支管理 使用branch list查看所有分支及当前所处分支 ```bash $ multi branch list ``` 使用branch create创建新分支 ```bash $ multi branch create dev ``` ### 切换分支 使用switch切换至目标分支 ```bash $ multi switch dev ``` ### 查看提交 使用log查看当前分支上的全部提交记录 ```bash $ multi log ``` ### 切换提交 使用checkout切换至目标commit ```bash $ multi checkout --commit bafyreibg3cnd33sqwrciohqpu7cjogdeochyte5dovkqd3a2vhung6hv2i ``` 使用checkout切换至分支头 ```bash $ multi checkout --head ```