Git远程协作的工作流程
流程细节
1. Fork
在github上你要贡献的repo(eg.http://github/remote/test.git
)之后称上游仓库。点击fork,将上游仓库fork到你的github,之后称为远程库(eg.http://github/chercher/test.git
)
2. Clone
选择本地文件夹,之后称为本地库
git clone http://github/chercher/test.git
3. 创建dev分支
进入文件夹中,创建dev
分支作为你的开发分支,当你完成了这个开发分支的时候直接将这个分支的内容push到你的远程库。一般一个分支对应一个issue
,开发完毕后即可销毁
git checkout -b dev
创建并切换至dev
分支,是git branch dev + git checkout dev
4. 创建upstream分支
upstream
分支是用于同步上游仓库的,可以同步其他人对上游仓库的更改
git remote add upstream http://github/remote/test.git
这时候用git remote
可以查看远程分支,git remote -v
可以查看具体路径
这时候应该有origin、upstream两种分支且分别有fetch和push的路径,origin是你的远程库,upstream是你的上游仓库
tips
: 如果远程分支路径出错了,git remote set-url branch_name new_url
替换为具体的你的出错的分支名和新的路径即可
5. 同步上游仓库
在提交自己的修改之前,先同步上游仓库到master
git remote update upstream
git rebase upstream/master
6. 修改文件push到远程库
对本地库进行修改后,git add changed_file & git commit -m"message"
添加文件到暂存区然后提交,写入相应信息。
git push origin dev:dev
这时你的远程库将会多出一个dev分支
7. 提出pull request
这时候在你的远程库中点击create pull request
,就可以等待别人review
你的代码后merge入上游仓库了
8. 合并commit
一个issue
有时候并不是一次commit就可以完成的,这时候就涉及到洁癖患者们用rebase合并commit的过程了
第一次commit
的时候并不需要做rebase
的操作,rebase
是将之后的多次commit
合并到之前的一个commit
当中
以第二次修改为例,在commit
之后进行 git rebase -i HEAD~2
补充
git 不留记录回滚到指定版本,并推送到远程分支
# 通过git reflog 找到想要回退版本的commit id
git reflog
# 回退本地版本
git reset --hard Obfafd
# 强制推送到远程分支
git push -f
Reference
转载
本文遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。