文章适用于团队合作的时候多个人向一个repo贡献,整理了Git从fork分支开始的过程。

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

tips. 如果出现"Could not execute editor"  则设置 git config即可,git config --global core.editor /usr/bin/vim

之后再执行rebase命令,可以看到这两次的提交,现在状态都是pick。只选择第一个commit为p,其他的都为s,即把新的commit并入之前的。

修改完成后写入,然后自动跳转至另一个页面修改commit的信息

之后继续按照第6步push --force到远程库的流程进行就可以了~

Git从fork分支开始的过程整理的更多相关文章

  1. github中fork分支和pullrequest的最佳实践

    github中fork分支和pullrequest的最佳实践 */--> code {color: #FF0000} pre.src {background-color: #002b36; co ...

  2. Git Pro - (2)分支

    Git 保存的不是文件差异或者变化量,而只是一系列文件快照. 在 Git中提交时,会保存一个提交(commit)对象,它包含一个指向暂存内容快照的指针,作者和相关附属信息,以及一定数量(也可能没有)指 ...

  3. Git教程之分支管理之一

    分支在实际中有什么用呢? 你创建了一个属于你自己的分支,别人看不到,别人还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又 ...

  4. git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚

    [git 删除本地分支] git branch -D br [git 删除远程分支] git push origin :br  (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退 ...

  5. 产品管理开发之Git工作流和分支规范推荐

    前言 无论是开源项目还是内部项目,使用Git都是大势所趋,尤其是在产品管理这块,使用Git大大提高了开发效率和产品的交付频率.本篇,针对Git的工作流和分支使用,进行了一些推荐. 目录 1     产 ...

  6. 【GIT】git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚

    [git 删除本地分支] git branch -D br [git 删除远程分支] git push origin :br  (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退 ...

  7. git 学习(2) ----- 分支

    当我们进行程序开发的过程中,有时会产生一个新的想法,然后就想马上试验,那我们怎么办? 如果我们继续在现有的基础上进行开发,但最后想法不成功,我们还要进行版本回退?如果我们的新想法,需要很长时间才能实现 ...

  8. git 创建本地分支与远程分支

    早上抽空整理了下git常用操作,偶尔看看加深下印象吧: 如果github上已经有master分支 和dev分支 在本地 git checkout -b dev 新建并切换到本地dev分支 git pu ...

  9. fork分支与源分支同步代码

    最进软件工程课程要团队开发做个网站项目,于是我在团队里推了使用github这种网站来协同开发,但是出现了个问题:fork后的代码无法 与源分支代码同步,导致fork分支的代码只有自己写的那部分,而不是 ...

随机推荐

  1. jQuery Ajax请求 .net 一般处理程序

    初学ajax 一个简单的功能,调试了2个小时,代码如下虽然成功了 但是有错误 <!DOCTYPE html> <html> <head> <meta http ...

  2. HDU 5531

    题目大意: 给定一个n边形的顶点 以每个顶点为圆心画圆(半径可为0) 每个顶点的圆要和它相邻顶点的圆相切(不相邻的可相交) 求所有圆的最小面积总和并给出所有圆的半径 设半径为r1 r2 ... rn, ...

  3. [每日一个小技巧] CentOS 下使用yum安装一类软件包

    版权声明:本文为博主原创文章,欢迎转载,转载请注明出处. https://blog.csdn.net/robertsong2004/article/details/37775313 yum 提供了丰富 ...

  4. 编译 GNU binutils

    重新以 arm 用户登陆,让新设置的环境变量起作用. [arm@localhost arm]#su arm [arm@localhost arm]#cd ${SRC} [arm@localhost t ...

  5. 跟我一起使用Vue.js + Docker 部署项目

    本文学习自:https://juejin.im/post/5bee5ddde51d457b8a33938c 项目环境是在ubuntu下,记得要在root目录下,不然安装vue会报错 npm insta ...

  6. Mysql查漏补缺

    Mysql查漏补缺 存储引擎 数据库使用存储引擎来进行CRUD的操作,不同的存储引擎提供了不同的功能.Mysql支持的存储引擎有InnoDB.MyISAM.Memory.Merge.Archive.F ...

  7. window 系统上传文件到linux 系统出现dos 格式换行符

    Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行,所以为了避免这种情况的发生,我们可以 ...

  8. cocos2D-X LUA 非常简单的一个贪吃蛇案例

    --[[ 贪吃蛇 ]] local RetroSnaker = class("RetroSnaker", function() return cc.Layer:create(); ...

  9. nginx的配置:目的是使用nginx反向代理后,应用程序获取用户真实ip

    一.了解nginx Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为HT ...

  10. AmqpException: No method found for class java.lang.String

    amqpTemplate发送消息用的String,接收消息用的Message,统一消息类型就可以