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