文章适用于团队合作的时候多个人向一个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. Markdown文档常用字体及颜色设置

    1.字体.字号.颜色设置 <font face="微软雅黑" >微软雅黑字体</font> <font face="黑体" > ...

  2. <爬虫实战>豆瓣电影TOP250(三种解析方法)

    1.豆瓣电影排行.py # 目标:爬取豆瓣电影排行榜TOP250的电影信息 # 信息包括:电影名字,上映时间,主演,评分,导演,一句话评价 # 解析用学过的几种方法都实验一下①正则表达式.②Beaut ...

  3. 错误Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream排查思路

    spark1(默认CDH自带版本)不存在这个问题,主要是升级了spark2(CDHparcel升级)版本安装后需要依赖到spark1的旧配置去读取hadoop集群的依赖包. 1./etc/spark2 ...

  4. 2019-5-21-dotnet-使用-GC.GetAllocatedBytesForCurrentThread-获取当前线程分配过的内存大小...

    title author date CreateTime categories dotnet 使用 GC.GetAllocatedBytesForCurrentThread 获取当前线程分配过的内存大 ...

  5. note : Get FilePathName from FILE_OBJECT

    转自:http://blog.csdn.net/lostspeed/article/details/11738311 封了一个函数, 从 FILE_OBJECT 中 得到 FilePathName 在 ...

  6. offset系列属性

    offset系列:获取元素的相关的样式属性的值 offsetwidth:获取元素的宽 offsetheight:获取元素的高 offsetleft:获取元素距离左边位置的值 offsettop;获取元 ...

  7. flask 使用hashlib加密

    flask 使用hashlib加密 import hashlib #引入hashlib #使用方法: password = ' sha1 = hashlib.sha1() #使用sha1加密方法,你还 ...

  8. PL/SQL创建用户

    步骤一:新建 步骤二:填写信息 对应SQL代码 -- Create the user create user WENT identified by "longrise" defau ...

  9. 正则表达式 判断内容是否为合法的url

    var strUrl= "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9a-z_!~*'().&=+$%-]+: )?[ ...

  10. csp-s模拟测试87

    csp-s模拟测试87 考场状态还可以$T1$我当时以为我秒切,$T2$确认自己思路不对后毅然决然码上,$T3$暴力挂了太可惜了. 03:01:28 03:16:07 03:11:38 140 03: ...