前言:

  Pull Request的流程

    1、fork

      首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull request的项目的名称

    2、clone

      通过运行命令:git clone git@github.com:当前账户名/要克隆的仓库名.git(反斜杠后面那个是新的仓库的地址),将该仓库克隆到当前的开发环境中

    3、branch

      1、确定分支

        通过在终端运行命令:git branch -a 查看当前所在的分支,通常我们都是在查看分支后在进行代码的修改,这是一个好习惯

      2、创建特性分支

        在应用GitHub修改代码时,我们通常采用的策略是在主分支下面创建一个特性分支,在该特性分支下进行代码的修改然后通过该分支 执行pull request操作,通过命令git checkout -b work master(这其中work为你新建的特性分支,master为你当前所在的分支)创建新的特性分支然后并自动切换。

    4、添加修改

      1、修改工程

        在刚刚新创建的分支下对fork下的工程进行修改

      2、提交修改

        首先使用命令:git diff查看修改的内容是否正确,然后使用命令:git add (要添加的文件) 向仓库中添加文件,之后在执行命令:git commit -m "对这次提交的说明"

      3、创建远程分支

        要从GitHub发送pull request, GitHub那一端中的仓库必须要有一个包含了修改后的代码的分支,所以需要创建一个与刚刚创建的特定分支(修改所在的分支)相对应的远程分支  

        执行命令:git push origin work1(这其中origin为当时fork远程主分支的名称, 一般默许认为是origin,work1为本地工作的特性分支), 然后执行:git branch -a进行查看是否创建成功

    5、发送pull request

      进入到自己的GitHub账户下面,并切换到创建的特性分支下, 然后点击create pull request后,确定没问题,填写相关内容,然后点击send pull request

1、基于git做的协同开发:

  1、初始化项目:git clone 仓库地址(生成仓库文件)

    可以对这个项目名进行重命名:git clone url name(项目名)

  2、git pull origin master(dev...)合并别人推送的分支

  3、rebase可以帮助将提交的记录整理成一条直线(可以选择不进行这一步)

  4、创建自己的开发的分支,并切换到自己的开发分支进行开发

  5、将需要和别人协作开发的内容推送至公开分支:git push origin serverfix

    协作者:git fetch origin

      抓取远程跟踪分支,本地是不会有这个分支的,可以当成是一个指针

      git merge origin /serverfix  合并内容到自己的分支

      git checkout -b serverfix origin/serverfix  创建并切换到serverfix,起点从origin/serverfix

  6、跟踪分支:

    git checkout --track origin/serverfix  跟踪该分支,git pull自动识别这个分支进行合并

    重命名本地分支:git checkout -b sf origin/serverfix

  7、git fetch 从服务器拉取本地没有的数据

  8、删除远程分支:git push origin --delete serverfix

  9、远程仓库托管网站:GitHub、码云、gitlab

2、git常见命令

  1、git init -- 初始化

  2、git add  -- 从工作区添加到版本库中

  3、git commit -m "" -- 从暂存区添加到分支

  4、git status -- 查看状态

  5、git log -- 查看版本库的日志

  6、git reflog -- 查看所有日志

  7、git reset -head -- 版本号切换

  8、git stash -- 保存

  9、git stash -- 将第一个记录从某一个地方重新拿到工作区(可能户产生冲突)

    git stash list -- 查看某个地方存储的所有记录

    git stash clear -- 清空某个地方

    git stash pop -- 将第一个记录从某个地方重新拿回到工作区(可能会产生冲突)

    git stash apply -- 编号,将指定编号记录从某个地方拿回到工作区(可能会产生冲突)

    git stash drop -- 编号,删除指定编号记录

  10、git branch dev -- 创建分支

  11、git branch -d dev -- 删除分支

  12、git checkout dev -- 切换分支

  13、git merge dev -- 合并分支

  14、git branch -- 查看所有的分支

  15、git clone https:xx  -- 从某个地方克隆内容

  16、git add origin https:xx -- 起个别名

  17、git push origin dev -- 添加到dev分支中

  18、git pull origin master -- 从主分支中拉取代码

  19、git fetch origin master -- 从仓库区获取内容

  20、git merge origin/master -- 和网上下的master分支进行合并

ps:在new一个新的仓库的时候,默认的分支是master分支

  开发的分支:dev

  做代码:review

  程序员自己的分支:自己定义

    1、每个员工创建自己的分支

    2、将自己的代码提交到自己的分支

    3、由组长或者老大来做代码的review -- 代码提交到review分支

    4、在提交到dev分支

    5、最后在合并到master分支上

3、stach的作用以及相关的命令

  git stash -- 将当前工作区所有修改过的内容保存到某个地方,当工作区还原到当前版本还未修改过的状态

  git stash list -- 查看某个地方存储的所有内容

  git stash clear -- 清空某个地方

  git stash pop -- 将第一个记录从某个地方重新拿到工作区(可能会产生冲突)

  git stash apply -- 编号,将指定编号记录从某个地方重新拿到工作区(可能会产生冲突)

  git stash pop -- 编号,删除指定编号的记录

4、merge和rebase的区别

  merge:

    会将不同的分支提交合并成一个新的节点,之前的提交分开显示,注重历史信息,可以看出每个分支信息,基于时间点,遇到冲突手动解决,然后再次进行提交。

  rebase:

    将两个分支的提交结果融合成线性, 不会产生新的节点,更注重的是开发的过程,遇到冲突手动解决,然后在继续操作。

5、如何基于git实现代码的review

  review:老板、小组长、领导

  review的内容:审查代码的规范

  流程:master

       dev

      个人分支

        review

    个人提交代码到review分支,审查完毕之后由领导合并到dev分支中

6、git如何实现v1.0 v2.0等的版本的管理

  git tag --> 查看标签

  git tag -l "v1.8" --> 查看1.8开头的所有的版本

  git tag -a v1.0 -m "one" --> 创建标签

  git show v1.0 --> 查看1.0的这个标签

  git tag v1.1-lw --> 轻量级的标签
  git push origin v1.5 --> 推送到远程中
  git push origin --tags --> 将所有标签推送到远程中
  git tag -d v1.2 --> 删除指定标签
  git push origin :refs/tags/v1.2 --> 删除远程仓库的标签
  ps: 用commit打好标签之后在提交到远程仓库中
 
 
7、什么是gitlab
  基于git的项目管理软件, 代码托管的私有仓库,自动进行代码备份,gitlab是公司自己搭建的项目代码托管平台
 
8、GitHub和gitlab的区别
  GitHub是一个面向开源及私有软件项目的托管平台(要是创建私有的话是需要付费的,最低的付费为每月7刀, 但是只支持5个私有项目)
  gitlab是公司自己搭建的项目托管平台,gitlab是可以部署到自己的服务器上的, 数据库等一切信息都掌握在自己手上,适合团队内部协作开发(你总不可能把团队内部的代码结晶总放在别人的服务器上吧, 简单来说GitHub可以看作是个人版的GitHub)
 
 
9、如何为GitHub上

Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码的更多相关文章

  1. 在github上参与开源项目贡献代码

    1 登录github, 点击自己感兴趣的repository的fork按钮,这样自己的github主页会有一个拷贝. 2 在自己本地修改同时保持和原来的repository同步: git remote ...

  2. GitHub上fork一个项目贡献代码以及同步原作者的修改【转】

    如何贡献自己的力量 首先你总得有自己的github帐号吧,注册一个,非常简单,只需用户名,邮箱,密码,邮箱只是用来找回密码的,不做验证.因此注册后立即能用!比如我现在新注册一个叫JsLouvre的示范 ...

  3. GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。

    1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...

  4. Git命令之从GitHub上下载开源项目

    1,先在本地创建一个目录,作为本地仓库,如: 2,使用Git init 初始化仓库,git初始化完成后,会生成一个隐藏的git文件如: 3,clone Git项目,如: 4,这个项目就是合Github ...

  5. 花20分钟写的-大白话讲解如何给github上项目贡献代码

    原文地址:http://site.douban.com/196781/widget/notes/12161495/note/269163206/ 本文献给对git很迷茫的新手,注意是新手,但至少会点基 ...

  6. (转)大白话讲解如何给github上项目贡献代码

    转自:https://site.douban.com/196781/widget/notes/12161495/note/269163206/ 2013-03-30 22:53:55   本文献给对g ...

  7. 大白话讲解如何给github上项目贡献代码

    本文献给对git很迷茫的新手,注意是新手,但至少会点基本操作,有点基本概念的新手,我不会从怎么用github和git是什么开始讲的.如果作为新手你看书又看不进去,原理又太复杂,又没有直接了当告诉我们怎 ...

  8. Git安装配置和提交本地代码至Github,修改GitHub上显示的项目语言

    1. 下载安装git Windows版Git下载地址: https://gitforwindows.org/ 安装没有特别要求可以一路Next即可,安装完成后可以看到: 2. 创建本地代码仓库 打开G ...

  9. github上fork原项目,如何将本地仓库代码更新到最新版本?

    场景: 在github上fork原项目,项目组成员发起pull request提交了代码,这时自己在本地仓库该如何更新到最新代码? 操作方法如下: 方法一.从github上进行操作然后更新 登录自己的 ...

随机推荐

  1. Python-网络编程之粘包、UDP

    目录 粘包问题 subprocess模块 struct模块 UDP协议编程 简易qq聊天室 粘包问题 什么是粘包问题呢? 在我们写 tcp socket编程的时候,tcp协议是一个流式的协议,服务端第 ...

  2. 莫烦PyTorch学习笔记(六)——批处理

    1.要点 Torch 中提供了一种帮你整理你的数据结构的好东西, 叫做 DataLoader, 我们能用它来包装自己的数据, 进行批训练. 而且批训练可以有很多种途径. 2.DataLoader Da ...

  3. zabbix自动发现主机(转)

    zabbix自动发现主机 2018年06月15日 18:02:52 loyal-Wang 阅读数:817更多 个人分类: zabbix   版权声明:本文为博主原创文章,转载请注明出处. https: ...

  4. PAT甲级——A1084 Broken Keyboard

    On a broken keyboard, some of the keys are worn out. So when you type some sentences, the characters ...

  5. mysql内建命令快速手记 — 让手指跟上思考的速度(一)

    在微信公众号上看到一篇文章说的很好,意思是说,大牛在尝试各种方案的时候可能并没有超神的预测和筛选能力 只是你通常测试一种情况时,大神已经测试了好几种方案了,讲的是"为什么大多数程序员不喜欢写 ...

  6. for update行级锁的作用

    1.for update叫排它锁,是一种行级锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则 ...

  7. 2019-9-2-C#判断文件属于文本或二进制

    title author date CreateTime categories C#判断文件属于文本或二进制 lindexi 2019-09-02 12:57:37 +0800 2018-2-13 1 ...

  8. HZOI 可怜与超市 树形dp

    学长留的题,质量还是灰常高的. 而且我树规本身较弱,一道也不想放下 题目链接:https://www.cnblogs.com/Juve/articles/11203824.html 题解:这道题我们可 ...

  9. html常用标签详解5-表格标签

    表格标签(如果有不对的,请大家多多指正.谢谢!) 1.总的表格标签概览 <table><!--表格标签start--> <caption></caption& ...

  10. leyou_05_文件上传

    1.搭建一个新的微服务Ly-upload用来上传文件 2.导入文件上传到额依赖 <dependencies> <dependency> <groupId>org.s ...