本文旨在向您介绍DragonOS社区的GitHub工作流程。包括一些用于帮助你维持本地环境与社区上游仓库同步的建议,还有一些git提交规范等等。
本文以DragonOS主仓库为例,社区的其他仓库亦适用此工作流程
[[toc]]
Fork
按钮,在你自己的账户下创建一个fork把主仓库克隆到你的电脑(注意不是你账户下Fork后的仓库)
git clone https://github.com/DragonOS-Community/DragonOS
# 或者是 git clone [email protected]:DragonOS-Community/DragonOS
cd DragonOS
接着,添加你fork的仓库,假设你的名字叫zhangsan
,那么就执行以下命令:
注意替换url为你账号下的仓库的链接
git remote add zhangsan https://github.com/zhangsan/DragonOS
# 或者是 git remote add zhangsan [email protected]:zhangsan/DragonOS
# 设置永远不推送到远程的master分支
git remote set-url --push origin no_push
# 确认你设置的远程已经生效
git remote -v
请记住: 永远不要在你本地的master分支上进行提交。请保持master分支与社区仓库的master一致。
在开发之前,需要创建新的分支。每个PR都要使用一个新的、干净的分支。
首先,请切换到本地的master分支(或者main分支),然后让它与远程同步。
git fetch origin
gir checkout master
创建你的工作分支:
git checkout -b patch-my-feature
请注意,分支名字应当能简短的说明这个pr是干啥的。
接着,你就可以开始开发了!
在开发过程中,您需要周期性的从社区主仓库合并代码到你本地的工作分支。如果您长期不同步主仓库代码,那么就会产生很多的冲突,甚至导致您的更改难以合并到主仓库。
在执行以下命令之前,请您先切换到您的开发分支,然后执行以下命令:
git fetch origin
git rebase origin/master
请注意,不要使用git pull
来合并主仓库代码到你的开发分支。请务必使用以上命令。因为,git pull
会创建merge commits,这会让提交历史变得混乱,使得您的PR的commit历史记录就变得难以理解了。
一般来说,直接提交就行。
git commit
你可能会经常把你的更改进行commit,以便能够回退更改.
当你的PR已经完成,能够准备进行审查的时候,请你把工作分支推送到你在GitHub上的仓库。
以上面的远程zhangsan
为例,命令如下:
git push zhangsan patch-my-feature
https://github.com/<username>/DragonOS
Compare & Pull Request
按钮,然后选择分支patch-my-feature
,目标为社区主仓库的master
分支(或main
分支)。