--- title: "07-贡献代码到开源项目从Fork到PR" created: 2025-11-27 tags: - 贡献代码到开源项目从Fork到PR - 项目 aliases: - 贡献代码到开源项目从Fork到PR --- # 贡献代码到开源项目 从 Fork 到 PR ## 1. 在 GitHub 上 Fork 原始仓库 首先,**Fork** 原仓库到你的 GitHub 账号下: 1. 访问原仓库(例如:https://github.com/原作者/仓库名)。 2. 在页面右上角点击 **Fork** 按钮,将该仓库复制到你的 GitHub 账号下。 ![[image-ed5dc7d4.png]] ![[image-215f22b6.png]] ## 2. 克隆你自己的仓库到本地 将 **你自己的仓库** 克隆到本地,进行修改: ```bash git clone https://github.com/你的用户名/仓库名.git cd 仓库名 ``` ![[image-010264ef.png]] ![[image-e8b56a8c.png]] ![[image-5af0511b.png]] ## 3. 设置 Git 配置 如果这是你第一次使用 Git,或者你想设置或更新你的用户名和邮箱,可以运行以下命令: ```bash git config --global user.name "你的名字" git config --global user.email "你的邮箱" ``` ```bash //示例: git config --global user.name "Zwww" git config --global user.email "2446796988@qq.com" ``` 这些信息会作为你每次提交的元数据,确保你的提交正确关联到你的 GitHub 账户。 ## 4. 设置远程仓库(origin 和 upstream) 为了方便拉取原始仓库的更新,需要设置 上游(upstream)仓库。 - **origin**:你的个人仓库(GitHub 中的 fork)。 - **upstream**:原始项目的仓库。 ### 查看现有远程仓库配置 ```bash git remote -v ``` ### 添加上游仓库(如果尚未添加) ```bash git remote add upstream https://github.com/原作者/仓库名.git ``` ### 验证添加的远程仓库 ```bash git remote -v ``` 这时你应该看到类似下面的输出: ```text origin git@github.com:你的用户名/仓库名.git (fetch) origin git@github.com:你的用户名/仓库名.git (push) upstream https://github.com/原作者/仓库名.git (fetch) upstream https://github.com/原作者/仓库名.git (push) ``` ![[image-353192c6.png]] (如果不小心设置错了 可以使用:`git remote remove upstream` 删除) ## 5. 获取上游仓库的最新代码(可省略) 在开始修改代码之前,确保你的本地仓库是最新的。可以通过以下命令从上游仓库拉取更新: ```bash git fetch upstream ``` 然后将 `upstream/main`(或 `upstream/master`)的更改合并到本地的 `main`(或 `master`)分支: ```bash git checkout main # 或者 git checkout master git merge upstream/main # 或者 git merge upstream/master ``` ## 6. 创建新分支进行修改 为了避免直接在 `main`(或 `master`)分支上修改且方便管理和组织代码,建议在每个功能或修复上创建一个新的分支,而不是直接在 `main` 或 `master` 分支上工作。 ```bash git checkout -b feature/your-feature-name ``` 在这里,`feature/your-feature-name` 可以是你为这次改动取的名字。 ![[image-65ac1a7d.png]] ## 7. 修改代码 至此相关配置完成,和正常开发一样操作就行了 在创建的分支上进行代码修改,修改完后,使用 `git add` 和 `git commit` 将修改提交到本地仓库。 ```bash git status git add . # 或者指定文件 git add 文件名 git status git commit -m "描述你做的修改" ``` ## 8. 将修改推送到 GitHub 上的个人仓库 将修改推送到自己仓库的相应分支: ```bash git push origin feature/your-feature-name ``` ![[image-2d239854.png]] ## 9. 发起 Pull Request(PR) 1. 登录 GitHub,进入你自己的仓库页面。 2. GitHub 会提示你是否发起 PR,点击 **Compare & pull request** 按钮。 3. 在 PR 页面,选择: 1. **base repository**:选择原始仓库(例如:`原作者/仓库名`)。 2. **base branch**:通常选择 `main` 或 `master`。 3. **compare branch**:选择你刚刚推送的分支(例如:`feature/your-feature-name`)。 4. 在 PR 页面填写标题和描述: - **标题**:简短且描述性地说明你所做的修改。 - **描述**:详细说明你做了哪些修改,为什么做这些修改,是否有任何不兼容变动等。 5. 点击 **Create pull request** 提交 PR。 ## 10. 其他可能的操作 - **更新本地仓库**:如果原始仓库有新的提交,你可以通过以下命令将这些提交合并到你的分支。 ```bash git fetch upstream git checkout main # 或 git checkout master git merge upstream/main # 或 git merge upstream/master ``` - **解决冲突**:如果合并过程中出现冲突,Git 会提示你解决冲突。你需要手动编辑冲突文件并提交解决后的修改。 ```bash git add 解决冲突后的文件 git commit -m "解决冲突" ``` - **删除分支**:PR 合并后,如果不再需要该分支,可以删除本地和远程分支。 删除本地分支: ```bash git branch -d feature/your-feature-name ``` 删除远程分支: ```bash git push origin --delete feature/your-feature-name ``` ## 11. 完成合并 当原作者接受你的 PR 后,修改将会合并到原始仓库。你可以继续开发新的功能,或者做更多的贡献。 ![[image-360466aa.png]] --- ## 常用 Git 命令总结 - `git clone [url]`:克隆远程仓库到本地。 - `git config --global user.name "你的名字"`:设置 Git 用户名。 - `git config --global user.email "你的邮箱"`:设置 Git 用户邮箱。 - `git remote -v`:查看远程仓库。 - `git remote add [name] [url]`:添加远程仓库。 - `git fetch upstream`:从上游仓库拉取更新。 - `git checkout -b [branch-name]`:创建并切换到新分支。 - `git add .`:将修改添加到暂存区。 - `git commit -m "[message]"`:提交修改并添加提交信息。 - `git push origin [branch-name]`:将本地分支推送到远程仓库。 - `git pull origin [branch-name]`:从远程仓库拉取并合并代码。 - `git merge [branch-name]`:合并指定分支到当前分支。 - `git branch -d [branch-name]`:删除本地分支。 - `git push origin --delete [branch-name]`:删除远程分支。 --- **项目分区导航**:[[06-git-github资源使用篇|git-github资源使用篇]] ⬅️ | 07-贡献代码到开源项目从Fork到PR | ➡️ [[08-SVN|08-SVN]]