GIT版本管理工具教程

 

GIT版本管理工具教程

GIT版本管理工具教程

一 Git初始化

  1. 下载安装, 下载地址: https://git-scm.com/downloads 每一个系统的都有(linux、mac、windows等),看官网的安装教程,很详细,此处我以windows来练习html

  2. 首先建立一个文件夹,这个文件夹就是咱们未来经过git来管理的全部文件的存放地点 。python

  3. 在文件夹中右键 使用Git Bashlinux

  4. 在弹出的窗口中执行初始化指令,让git帮咱们对这个文件夹中的全部文件以及文件夹进行管理nginx

  5. git init  #建立git版本管理的本地仓库
  6. 产生的.git文件夹用来存放你管理的文件的全部版本以及git配置相关的内容,不要轻易动它git

二 简单指令使用

基本操做

git status 查看仓库中全部的文件夹和文件的状态
git add supercrm 让git管理单独的文件夹或者文件 git add . 管理全部文件和文件夹 
配置用户名和邮箱
$ git config --global user.name <用户名>
$ git config --global user.email <邮箱地址>
例如:
$ git config --global user.name "吴超"
$ git config --global user.email "1069696250@qq.com"


而后就能够提交版本了,看指令
git commit -m '描述信息'
例如: git commit -m 'v1版本'

管理以后进行二次开发,修改一些文件以后:github

git add supercrm git commit -m 'v2版本'

查看日志sql

git log

简单总结

1 进入要管理的目录
2 git init初始化  即:让git管理咱们当前的文件夹
3 git status 检测当前文件夹中的文件状态
4 三种颜色的变化
    a 红色:新增文件或者修改的老文件 --> 执行git add .(或者单个文件或文件夹的名称) 
    b 绿色:git已经管理起来了 --> 执行git commit -m '描述信息'
    c 白色:生成版本了

好,以后咱们会细说这几个颜色到底还有什么意义
5 git log 查看版本记录

三 Git进阶

Git三大区域

介绍: 做区(写代码的地方)—git add暂存区(临时存储)—git commit本地库(历史版本)docker

img

Git的版本库里存了不少东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为咱们自动建立的第一个分支master,以及指向master的一个指针叫HEAD。

文件往Git版本库里添加的时候,是分两步执行的:

第一步用git add把文件添加进去,实际上就是把文件修改添加到暂存区。
第二步是用git commit提交更改,实际上就是把暂存区的全部内容提交到当前分支。
建立Git版本库时,Git自动为咱们建立了惟一一个master分支,git commit就是往master分支上提交更改。add须要提交的文件修改统统放到暂存区,而后commit可一次性提交暂存区的全部修改

Git回滚

​ 假如咱们如今写了三个版本了,可是你发现第三个版本有问题,或者说被迫的下线第三个版本添加的新功能,那么咱们是否是要将代码回到第二个版本的状态啊,若是咱们本身手动去修改是否是就很是的麻烦了,因此此时就用到咱们git回滚功能了 。shell

git log  #查看日志,每一个版本都有版本号

img

​ Git回滚操做指令

git reset --hard 版本号
例如:git reset --hard a3c69761b4ecd8b23c392315cd245f2939024882 (第二个版本的版本号)

​ 不过,后来你又以为第三个版本的功能仍是挺好的,接着拿回来用吧,可是你已经回滚到第二个版本了啊,这可怎么办?看操做:

​ 先执行git log,你发现,git log里面没有显示咱们原来的第三个版本,对不对,此时咱们不能用这个指令来查看了,须要下面这个指令:

git reflog  #也是查看日志,可是包括回滚操做的版本
再经过git reset --hard 版本号来回滚

​ Git的强大之处,可以让咱们在任意版本之间来回切换。

​ 咱们接着学两个指令

git checkout -- 文件名  #将文件从以修改的工做区回滚到未修改的状态

​ 若是咱们将修改i的文件已经添加到了暂存区了,又怎么回滚呢?看指令

git reset HEAD 文件名

​ 若是想让他再回到未修改时的状态,那么就又用到了咱们那个git checkout -- 文件名,那个指令了 。

​ 关于回滚,git里面还有几个其余的指令,就不一个一个的演示了,你们看图就明白了:

img

指令总结

git init
git add
git commit
git log
git reflog
git reset --hard 版本号

Git分支

​ 分支能够给使用者提供多个开发环境,也就是说能够将你的工做从主线中分离出来,以避免影响开发主线,等分支的代码开发完以后,再合并到主线代码上,就好比说,咱们写了一个毕业论文,大体的流程写完了,可是咱们可能以为某些地方写的太少了(添加新功能),须要丰富一下,或者有些地方可能写的有问题须要调整一下(以前的代码有bug,须要修改),那么咱们怎么作呢,是否是会复制一份这个论文,而后再修改,改完以后若是没有什么问题,就将改完以后的做为了最新的版本(分支上添加了新功能或者修复了bug,而后进行分支合并)。

​ 你们在这里先不用去考虑公司里面究竟是怎么使用git来进行工做的,咱们首先先来看看,若是你在本身的电脑上开发程序,用git是怎么个流程,怎样开分支,分支是个什么样子?

​ 好比,咱们如今的代码开发到了第三个版本,以前咱们没有说什么分支的概念,其实咱们开发代码的时候,默认的分支叫作主分支(master分支),只是咱们一直还不知道。

img

指令总结

git branch    查看当前分支
git branch dev  建立一个名为dev的分支
git checkout dev  将工做切换到dev分支上

git checkout -b dev #建立并切换到dev分支上,和上面两个指令的效果同样

git branch master
git merge bug    #分支合并---首先切换到master分支,而后在master分支上执行merge指令来合并bug分支的代码

git branch -d bug  删除bug分支

​ 好比我当前的代码只到了test3,3版本,我想添加一个新的功能test4,那么我就建立了一个dev分支,并在dev分支上添加了test4,好比说test4须要打印两行内容,可是我如今写了一行内容的时候,发现以前线上使用的代码(线上使用的代码通常是master分支上的),出现了bug,那么咱们须要切换到master分支,而且在master分支上再建立一个bug分支,在bug分支上修复bug,修复完成以后,须要合并到master分支上,合并以后的版本咱们暂且称为5版本,记着,5版本的代码和dev开分支时的3版本代码是有些变更的,由于修复了bug,可是dev分支上仍是使用的master分支上的v3版本进行的新功能的开发,那么bug修复完以后,咱们如今又要回到dev分支上继续新功能的开发,开发完成以后,须要合并到master分支上,合并的时候,你会发现报了一个错误,其实也不是错误,就是提示你,代码有冲突,这冲突怎么来的,你想,master分支已经到了c5版本,可是dev分支上的代码仍是从master分支的c3版本的基础进行添加新功能的,因此合并的时候c3版本的其余代码和它c5版本的代码自己就有一些不同的地方(就是那个bug修复的地方),因此出现了冲突的问题,那么怎么办呢,没办法,咱们只能手动来修复冲突,那么怎么修复呢,git会将全部的冲突所有标记在你的代码文件中,有冲突的方法,找到它手动修改一下就能够了。其实,只要咱们两个分支中的相同的文件的同一行出现了不一样的内容,合并时就会出现冲突。看一下冲突的报错是什么样子的:

img

​ 出现了bug,咱们看看bug在哪里,其实git会将冲突在你的代码文件中标识出来,看图:

​ img

​ 这里提示你了,dev分支上是哪些内容,master分支上是哪些内容,咱们把没用的删除就能够了,而后提交一个新的版本,这样就完成了分支代码合并

Git工做流

看图:![img](https://img2018.cnblogs.com/blog/988061/201910/988061-20191015134341065-2081637868.png)

​ 公司通常最少有两个分支,master只保留正式(线上)版本,dev(develop)分支,开发都在dev分支上搞。

四 Github代码管理仓库

​ 咱们作开发的时候,写程序,可能会有多我的一块儿开发,或者你本身有多个电脑,家里一个电脑,办公室一个电脑,可是你若是刚开始的代码都是在家里的电脑写的,而后你到了公司,你想继续开发你的程序,那么就须要你本身来回的拷贝本身的代码,并随身携带,很是麻烦,你说对不对,因此如今就出现了代码网络托管站(就相似于行李托管站同样),能够帮你保存你的代码,以及各个版本的代码和全部分支,这样的话,你在家里开发完了以后,把代码放到托管站,就不用本身随身携带了,等你到了公司,使用公司的电脑开发的时候,就能够直接经过网络托管站把本身已经开发好的代码拉下来到本身的本机,而后继续开发,开发完了以后,在交给托管站托管,这样就方便多了,有不少这样的托管站,好比今天咱们要说的GIthub,还有GitLab、码云、开源中国、CSDN等都在作代码托管平台。

img

​ 使用Github有这么几步:

  • 注册Github帐号

  • 建立仓库

  • 本地代码推送到仓库

    好,那么我就来看看一看具体怎么玩:

第一步:注册Github帐号

这个就不带着你们注册了,看图,网址: https://github.com/

img

注册号帐号以后,点击上面的sign in进行登录,登录成功以后,会来到这个页面,也就是你的首页

img

第二步:建立仓库

​ 也就是咱们说的托管站里面开辟一个本身的代码托管的空间,看操做

​ img

​ 而后会看到下面的页面,看介绍

​ img

​ 建立好以后咱们会看到下面这个页面,其实在GitHub这个托管站上,就至关于咱们建立了一个叫作dbhot(就上面我起的那个仓库名称)的文件夹,用来管理咱们的项目。

​ img

第三步:Github保存代码

​ 将咱们的代码和分支推送到GitHub上保存

​ 打开咱们的终端,也就是咱们那个git bash,查看一下状态。

 img

​ 而后看一下推送代码的指令:

     img

​ 查看一下当前的分支

 img

​ 而后执行指令:

​ img

​ 而后执行它:

​ img

​ 会给你弹出一个窗口,让你输入GitHub的帐号和密码,这里个人截图失败了,致使你们在这里看不到效果了,可是不要紧,你应该能够搞定的。而后接着看:

​ img

​ 等代码都推送成功了以后,咱们来GitHub上刷新一下咱们的仓库页面,就会看到变化了:

      img

     img

​ 推送一下dev分支到GitHub上:

 img

刷新咱们的GitHub页面,就看到有两个分支了

 img

第四步: 拉取GitHub上的代码继续开发

​ 换一个电脑,而后拉取GitHub上的代码继续开发,我这里简单模拟一下,就在本地从新建立一个文件夹了,而后在这个文件夹里面来搞咱们的代码

​ 好比:我又建立了一个gitpro2文件夹,而后在这个目录里面使用咱们的git bash:

​ img

​ 在这里面克隆一下远程GitHub上的代码到咱们的这个文件夹里面:

​ 先看一下咱们远程仓库的地址是什么,看GitHub:

​ img

​ 而后执行下面的指令:

git clone 地址
例如: git clone https://github.com/clschao/dbhot.git

​ 而后整个仓库就被咱们克隆下来了(包括全部分支,全部代码,全部版本),在咱们的gitpro2文件夹里面了,而后咱们须要进入到仓库里面才能看到咱们的代码:

​ img

​ img

​ 查看一下分支:

​ img

​ 切换到dev分支上试试,经过查看提交的版本,你会发现就是咱们以前的dev分支:

​ img

第五步:换一个电脑继续开发

指令总结

上传代码
1. 给远程仓库起名
    git remote add origin 远程仓库地址 2. 向远程推送代码
    git push -u origin 分支

在新电脑上第一次获取代码
1. 克隆远程仓库代码
    git clone 远程仓库地址(内部已实现git remote add origin 远程仓库地址) 2. 切换分支
    git checkout 分支

在新电脑上进行开发
1. 切换到dev分支进行开发
    git checkout dev
2. 把master分支合并到dev(仅一次)
    git merge master
3. 修改代码
4. 提交代码
    git add .     git commit -m 'xx'
    git push origin dev

回老电脑上继续写代码
1. 切换到dev分支进行开发
    git checkout dev
2. 拉代码
    git pull origin dev
3. 继续开发
4. 提交代码
    git add .     git commit -m 'xx'
    git push origin dev

​ 开发完毕以后,在dev分支上commit,而后切换到master分支上合并一下dev分支,而后推送到GitHub上的master分支上,就算是完成了 。

​ 最后,由于咱们dev分支上也是最新的代码了,也能够将咱们的dev分支推送到GitHub上的dev分支上,其实推送以前有个好习惯就是在dev分支上合并一下master分支的代码git merge master,这里我没有写,可是个好习惯 。

​ 之后若是咱们还想继续开发,咱们能够将咱们的dev和master分支上的最新的代码都拉下来进行继续开发:

git pull origin dev
git pull origin master

第六步: 若是在公司忘记提交代码,怎么搞?

在公司开发的时候
1. 拉代码
    git pull origin dev
2. 继续开发

3. 提交代码
    git add .     git commit -m 'xx'
注:忘记push了,没有推给GitHub

回到家继续开发
1. 拉代码,发如今公司写的代码忘记提交到GitHub上了
    git pull origin dev
2. 继续开发其余功能
    可是在家里写的功能有可能和你在公司开发的代码有些冲突(在同一行)
3. 把dev分支也推送到了远程
    git add .     git commit -m 'xxx'
    git push origin dev

次日到了公司继续写代码
1. 拉代码,把昨天晚上在家里写的其余功能的代码拉到本地(有合并、可能产生冲突)
    git pull origin dev
2. 若是有冲突,手动解决冲突(公司电脑上昨天忘记push的代码和昨日回到家后写的代码可能有些冲突)
3. 继续开发其余功能
4. 把dev分支也推送到远程
    git add .     git commit -m 'xxxx'
    git push origin dev

​ 其实git pull origin dev等价于下面两个指令:

git fetch origin dev   #将远程仓库dev分支的代码拉到本地git的版本库中,为了和本地dev分支作个区分,远程拉下来的dev分支会叫另一个名字:origin/dev 
git merge origin/dev  # 合并远程拉取下来的dev分支的代码

​ 看图:

img

五 rebase变基

​ 这个rebase和上面学的东西关联性不大,这是一个独立的概念,这个rebase可以让咱们的git提交记录变得很是简洁,看图:

​ img

rebase的第一个场景

​ 好比看下图,我从新建立了一个文件夹,里面建立了4个文件,每建立一个文件就提交一个版本,如今有下面4个版本了,可是v二、v3和v4版本只是一些没有太大改动的版本,你想把这些记录合并成为一个,就用到了咱们的rebase:

​ img

​ 看指令:

方式1:
    git rebase -i 版本号
    例如:git rebase -i 281f2525fb3600b663a6554ed9e301781239bd69  #这个是v2版本的版本号,那么执行这个指令的意思就是将v2版本一直到目前最新版本v4,所有合并到一块儿

方式2:经常使用
    git rebase -i HEAD~3  #3表示合并3个版本,而HEAD~3的意思是以当前最新的版本开始,合并最近的三个版本,也就是v四、v三、v2将合并到一块儿

​ 那咱们执行一下git rebase -i HEAD~3 这个指令看一下效果,执行完以后你会看到这样一个界面:

​ img

​ 而后修改 :

​ img

​ 而后你会看到下面的页面:

​ img

​ 而后咱们在描述信息的地方能够改一些描述信息,好比改为下面的样子:

​ img

​ img

​ 这样咱们的提交记录就更加简洁了,可是有个注意事项,若是你合并版本以前,已经将v2版本push到远程了,这样你再合并v2版本的话,等你再push到远程会致使远程的版本变的很混乱,因此建议不要将已经push到远程的版本进行合并,咱们最好只合并本身本地的,而后再push到远程。

rebase的第二个场景

​ 看图:

​ img

指令总结

1. git branch dev 和 git checkout dev #建立dev分支和切换到dev分支上
2. 建立一个dev.txt文件
3. git add . 和git commit -m 'dev branch' 4. git checkout master #切换到master分支上
5. 建立一个master.txt文件
6. git add .和git commit -m 'master branch' #在master分支上提交一下最新添加的master.txt文件也做为master分支上的一个版本 
在dev分支上执行一个git log查看一下dev分支提交的版本
在master分支上执行一个git log 查看一下master分支提交的版本
git log --graph  #图形化界面显示全部的提交记录
git log --graph --pretty=format:'%h %s'  #让图形化界面显示记录的时候更清晰一些:%h是显示版本号,%s是显示版本描述。

到目前为止,咱们就作出了上面那个图的效果,在dev分支上有一个版本,在master分支上有其余的版本

那么之后咱们再开发的时候,能够经过rebase来让dev分支上的记录合并到master分支上,那么咱们在master分支上再查看git log --graph的时候就只能看到一条线的记录了
如今咱们经过rebase来合并一下dev分支上的版本,让git log显示的记录编程一条线
1. git checkout dev

2. git merge master  #注意,由于dev分支上的代码没有master分支上的全,全部先合并一下master分支,而后再进行后面的操做
3. 建立一个dev1.txt -- git add . -- git commit -m 'dev branch commit 1' 3. git checkout master 
4. 建立一个master1.txt文件 -- git add . -- git commit -m 'master branch commit 1' 5. 这样的话咱们再dev分支上有个版本,master分支上又一个版本
6. git checkout dev
7. git rebase master  #将dev分支上的这个新记录并到master分支的记录上
8. git checkout master
9. git merge dev 
而后咱们再执行git log --graph 就看到了一条线,而且这条线上有dev分支开发的那个版本

rebase的第三个场景

​ 不作演示了,看看图吧:

​ img

​ 其实第三个场景有点相似咱们的第二个场景,不过是产生在当咱们执行pull的时候,若是本地代码和远程的代码有冲突,会致使咱们本地的分支进行git log日志的分叉,因此为了防止这种分叉,咱们使用fetch和rebase两个指令来代替,rebase也可以合并代码。(这个就做为了解吧)

​ 注意:说了rebase操做其实也是合并代码的操做,那么好了,咱们若是在进行rebase指令的时候,代码有冲突怎么办,手动解决冲突,而后执行一下git提示的指令,好比git add等,而后执行一个git rebase --continue,来继续执行rebase指令就能够了。

六 Git配合Beyond Compare来解决冲突

​ 第一步: 安装beyond compare软件,下载地址:http://www.scootersoftware.com/download.php,就直接点击下载安装,而后和安装其余软件同样,点点点就能够了。

​ 第二步:在git中进行如下配置

git config --local merge.tool bc3  #--local的意思是只对当前项目有效,其余的本地仓库是不生效的
git config --local mergetool.path '/usr/local/bin/bcomp'  #beyond compare的执行程序的安装路径
git config --local mergetool.keepBackup false
若是经过上面的指令配置不能正常生效的话,就改动如下配置文件,打开 .gitconfig 配置文件 (windowsC:\Users\Administrator [Administrator 为你当前用户名], mac 在 ~/),加入如下内容:
[merge]
tool = bc3
 [mergetool "bc3"]
path = D:/Program Files (x86)/Beyond Compare 3/BCompare.exe  #注意win下是这个/路径分隔符,文件路径尽可能不要出现空格昂

​ 第三步:应用这个软件来解决冲突

​ 当咱们执行merge合并的时候,好比说,咱们执行了一下git merge dev分支的指令,会报错,报一个代码冲突的错误,而后咱们知道产生冲突了,此时咱们就可使用咱们的beyond compare来进行冲突排查和修改,使用下面的指令来调用工具:

git mergetool

​ 执行上面的指令以后,自动会打开beyond compare,你会 看到下面的页面:

​ img

七 Git多人协做开发

​ 多人协做开发gitflow工做流思路,看图:

​ img

​ 建立新项目,咱们来玩一下整个工做流。

第一步:建立组织

​ 先去咱们远程的GitHub上建立一个组织(其实还有另一种邀请其余人员进行协同开发的方式,不适合公司内部开发,因此咱们给你们说一种正规的,就是建立组织)。

​ img

​ 而后进入这个页面:

​ img

​ 再而后进入这个页面:

​ img

​ 点击next会看到下面的页面:

​ img

​ 而后skip以后,咱们看到下面的页面:

​ img

​ 点击建立仓库以后,就又到了咱们建立仓库的页面:

​ img

​ 而后就看到了咱们仓库,这样咱们的组织和仓库就建立好了。

​ 注意,咱们如今建立的项目仓库是在咱们建立的组织里面建立的,和以前单纯的建立仓库是不太同样的,由于咱们公司未来可能有多个项目,那么咱们就能够经过这个组织来管理多个仓库就能够了。

​ 好了,建立咱们的本地git仓库,而后关联一下咱们远程的这个仓库(和远程仓库名称要一直),执行一下GitHub上建立仓库后提示的指令就能够了:

img

​ img

​ 而后刷新一下咱们的GitHub页面,就看到了咱们push上来的代码了:

​ img

​ 到这里咱们的仓库就建立好而且和本地关联好了,那么咱们继续学一个新东西,叫作tag(标签),公司通常都是用标签来管理版本的,好比看下图,咱们git log查看一下当前版本:

​ img

​ 这样去看版本的时候,一长串的版本号看着其实不太好看,咱们就能够给这个版本打上一个标签tag。

Git标签

​ 看指令:

git tag -a 'v1' -m '初版'

​ 再看git log:

​ img

​ 此时,咱们就给第一个版本打上了一个标签,咱们还须要将他推到远程仓库:

git push origin --tags  #将全部的tag推送到远程仓库

​ img

​ 执行完这个指令以后,咱们再去GitHub上看一下:

​ img

​ 点击release看一下:

​ img

​ 好,建立组织,建立仓库,关联仓库,给版本打标签,咱们就学完了,接下来咱们学一下若是邀请其余成员。

第二步:GitHub组织中邀请成员

​ 按照咱们的gitflow工做流程图来看,此时咱们的master分支和第一个版本已经建立好了,接下来,咱们应该建立一个dev分支,而后邀请其余成员来完成其余功能的开发 

第一步:建立dev分支

​ img

第二步:将dev分支推送到远程

git push origin dev

​ 查看一下GitHub,就有了咱们的dev分支:

img

第三步:邀请两个成员

  1. 两个成员都须要先去GitHub上注册一下本身的GitHub帐号,其余的代码托管平台也是这么玩,先去注册帐号。这里我本身又经过其余的邮箱建立了一个名为Jadentest的帐号,用它来测试

  2. 邀请成员

    img

    ​ 而后看到下面的页面:

    img

    点击邀请以后,弹出下面的窗口:

    img

    输入成员名称,而后点击invite,看到下面的页面,先选择一个普通成员就好了:

    img

    那么这个Jadentest在建立帐户时留下的邮箱就会收到一个邮件:

    img

    点击查看这个邮件,而后点击加入组织:

    img

    而后会看到下面这个页面:

    img

    再点击join加入就能够了,可是记着,上面的页面是出如今了Jadentest这个GitHub帐户中的页面,因此若是你是用一个电脑在玩,须要先登录上这个帐户,再点击邮件加入组织。

    好,看一下GitHub咱们的组织中people这个选项中,就有了两个成员:

    img

    好,继续登录咱们的clschao这个帐户,而后看一下组织的权限以及项目的权限。

1.组织权限

​ 在组织的settings中:

​ img

​ 由于咱们的组织中可能有不少的项目,而我邀请的成员不能说上来就对全部的项目都有修改的权限,因此是只读的,能够看看,那么若是咱们想让某些成员对某些项目有修改的权限,就须要到项目中去作相关设置。

2.项目权限

​ 点击项目,在项目页面的settings中:

​ img

​ 这样的话,这个Jadentest成员就有了对咱们这个gitflowtest项目的修改权限了,也就是能够正常的推送代码了。

​ 好,成员已经邀请好了,而后这个成员须要在本身的本地将咱们远程仓库的项目下载到本身的本地,好比我在本地建立了一个Jadentest的文件夹做为它本身的本地Git仓库。

3.新成员进行项目协做开发

​ 将咱们的远程仓库的这个gitflowtest项目的地址给他:

​ img

​ 而后它在本身的本地下载咱们的代码:

​ img

​ 而后进入到gitflowtest文件夹中,就看到了咱们远程仓库中的全部内容,进入这个文件夹,而后再运行一下咱们的git bash:

​ img

​ 那么开始开发yue功能:

​ img

​ 好比,开发就建立了这个文件,而后这个成员就要回家了,而后将本身开发的文件推到远程仓库:

​ img

​ 而后回到家以后,继续又想开发了:

​ img

​ img

​ img

​ 接下来须要干什么呢?须要代码的review,通常是小组长或者技术主管或者总监等,怎么作呢,通常是经过pull request。

4.pull request合并请求

​ 首先咱们的GitHub上的项目中进行一些配置:

​ img

​ 点击添加规则按钮以后,咱们一下页面:

​ img

​ 而后点击下面的一个create按钮,而后再点击一下左边的branches菜单:

​ img

​ 其实master分支也能够继续添加一个这样的规则,这里我就不作演示了。

​ 而后咱们的Jadentest成员将yue功能开发完了,须要提交一个pull request请求,在哪里作呢?在他本身的GitHub上,好比咱们登录一下这个用户,而后看一下GitHub上的操做:

​ img

​ 点击这个new pull request:

​ img

​ 而后我这个管理员clschao就能在本身的GitHub上看到Jadentest这个成员发来的请求了:

​ img

​ 而后点击这个yue功能:

img

​ 而后就看到下面全部的文件以及代码了:

​ img

​ 而后看到下面的页面:  

​ img

​ 而后切换会咱们的这个页面:

​ img

​ 而后还须要肯定一下:

​ img

​ 还能够删除这个分支,若是没有用了,就能够点击下面的按钮进行删除:

​ img

​ 而后再看咱们的远程仓库中的dev分支,就有了这些Jadentest新开发的代码了:

​ img

​ 而后其余成员就能够在本身的本地经过git pull origin dev,就能将本身的本地的代码变成最新的了。

​ 若是是作测试的,通常是从咱们的dev分支上去获取代码进行测试,测试若是出现了bug,开分支进行修复,而后再合并会dev分支,而后再测试,没有问题的话,合并到master分支上,而后进行项目上线。

八 给开源项目贡献代码

第一步:找项目

​ 找到一个项目,好比咱们的tornado框架,python的,你们在GitHub上搜索tornado就能够了:

​ img

​ 若是 你发现这个框架有些bug,或者是有些功能不够完善,那么咱们就能够拿来进行修改。

第二步:fork

​ 先进行fork,点击一下fork就可以将这个项目放到本身帐号的空间中了,其实就是将别人空间中的代码拷贝到了本身的帐户中:

img

​ 而后会看到下面的页面:

​ img

​ 选择本身的帐户以后,就能够在本身的帐户中看到这个项目了,看下图:

​ img

第三步:在本身的仓库中修改代码

​ 就又回到了咱们以前的流程。

img

​ 而后在本地建立文件夹,clone代码:

​ img

​ 好比,我建立了一个bug文件,写上一些内容,而后提交push到本身远程仓库中的这个tornado项目里面:

第四步: 提交pull request

​ 给源代码做者提交修复bug或者拓展功能的申请,其实就是提交一个pull request。

​ img

​ 这样咱们添加的bug.txt文件就保存到了咱们的远程仓库的tornado项目中了。

​ img

​ 而后若是咱们想将修改的内容提交给源代码的话,须要发一个pull request申请:

​ img

​ 而后看到下面的页面:下面是你的仓库中的这个项目的master分支往源代码的做者的仓库中的master分支上请求合并。只要点击pull request,那么申请就发过去了,若是人家合并了你的申请,你就nb了。

img

​ 这就是为开源项目贡献代码的过程。

九 Git配置文件详解

配置文件其实分三个:

1.项目配置文件

​ 只有当前的git项目生效, 在项目的.git/config文件中,对应的配置指令:

git config --local user.name 'wuchao'
git config --local user.email 'wuchao@xx.com'

2.全局配置文件

​ 全部git管理的项目都生效,mac电脑在~/.gitconfig中,windows在:,对应配置指令:

git config --global user.name 'wuchao'
git config --global user.name 'wuchao@xx.com'

3.系统配置文件

全部项目都生效,mac在/etc/.gitconfig文件中,windows在: ,对应配置指令:
git config --system user.name 'wupeiq'
git config --system user.name 'wupeiqi@xx.com'
注意:须要管理员权限,也就是root权限

​ 应用场景:

#配置用户名和邮箱
git config --local user.name 'wuchao'
git config --local user.email 'wuchao@xx.com'

#配置beyond compare工具
git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'  #工具路径
git config --local mergetool.keepBackup false

#配置push的时候的远程仓库的地址
git remote add origin 地址,  默认是添加在了本地配置文件中(--local

​ 使用配置项的顺序:本地配置--全局配置--系统配置。

​ 更多的配置相关内容和指令:

配置 Git 的相关参数。

Git 一共有3个配置文件:

1. 仓库级的配置文件:在仓库的 .git/.gitconfig,该配置文件只对所在的仓库有效。
2. 全局配置文件:Mac 系统在 ~/.gitconfig,Windows 系统在 C:\Users\<用户名>\.gitconfig。
3. 系统级的配置文件:在 Git 的安装目录下(Mac 系统下安装目录在 /usr/local/git)的 etc 文件夹中的 gitconfig。

看指令:
# 查看配置信息
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> -l
 # 查看当前生效的配置信息
$ git config -l
 # 编辑配置文件
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> -e
 # 添加配置项
# --local:仓库级,--global:全局级,--system:系统级
$ git config <--local | --global | --system> --add <name> <value>
 # 获取配置项
$ git config <--local | --global | --system> --get <name>
 # 删除配置项
$ git config <--local | --global | --system> --unset <name>
 # 配置提交记录中的用户信息
$ git config --global user.name <用户名>
$ git config --global user.email <邮箱地址>
 # 更改Git缓存区的大小
# 若是提交的内容较大,默认缓存较小,提交会失败
# 缓存大小单位:B,例如:524288000(500MB)
$ git config --global http.postBuffer <缓存大小>
 # 调用 git status/git diff 命令时以高亮或彩色方式显示改动状态
$ git config --global color.ui true
 # 配置能够缓存密码,默认缓存时间15分钟
$ git config --global credential.helper cache
 # 配置密码的缓存时间
# 缓存时间单位:秒
$ git config --global credential.helper 'cache --timeout=<缓存时间>'
 # 配置长期存储密码
$ git config --global credential.helper store

十 Git远程仓库免密登录

​ 其实以前的git版本在咱们进行push的时候,每次都须要输入用户名和密码,很麻烦,因此出现了免密登录的形式,下面咱们说三种免密登录的形式。

1.在url中进行体现

原来的地址: https://github.com/wuchao/dbhot.git
修改的地址: https://用户名:密码@github.com/wuchao/dbhot.git #这样就在使用远程地址的时候直接加上了用户名和密码,就不须要每次都从新输入了

git remote add origin https://用户名:密码@github.com/wuchao/dbhot.git

git push origin master

​ 上面的这种形式还能够经过修改配置文件来搞:找到项目的.git文件夹中的config文件,而后打开修改,这里我就不作演示了,简单看一下图吧:

​ img

2.经过SSH实现(公私钥)

​ 其实远程仓库的每一个项目均可以获取一个ssh的地址,看图:

​ img

​ 点击这个use ssh以后,就看到下面的内容:

​ img

​ 这里咱们看到了一个地址,其实这个地址是不能直接用的,须要下面的步骤才能经过它来进行免密登录:

​ a. 如今本身的电脑上生成公钥和私钥,看指令:

ssh-keygen   #或者ssh-keygen -r rsa
这样的话就会在C:\Users\chao\.ssh 目录下生成两个文件(mac是在~/.ssh 文件夹下)

​ img

​ b.拷贝公钥文件中的内容,放到GitHub的配置中:

​ img

​ 找到GitHub的settings配置:

​ img

​ img

​ 而后添加一下公钥文件中的内容就能够了:

img

​ 而后提示你确认密码:

​ img

​ 而后看到下面的页面,就已经配置好了 :

img

​ c. 在本地的git中配置远程的ssh地址

git remote add origin git@github.com:gitflowchao/gitflowtest.git #这个地址是ssh的地址了

​ img

​ d. 之后在使用就不用用户名和密码了:

git push origin master

3.git自动管理凭证

​ 其实你会发现,咱们输入过一次用户名和密码以后,其实以后的操做一直也不须要再次输入用户名和密码了,由于git自动帮咱们管理起来了,这个也在一个地方存着,这里我就不作演示了,你知道一下就好了,这种方式其实咱们用起来比较方便,可是其实企业里面通常都是用的第二种,也就是ssh的那种。

十一 Git忽略文件

​ 其实咱们让git管理文件的时候,能够设置一些让git忽略的文件或者文件夹,经过一个叫作 .gitignore的文件,首先在咱们的git本地仓库中建立一个这样的文件,文件中写上一下内容,看例子:

​ img

添加让git忽略的文件:

img

还能够添加.gitignore本身,经过*.txt可以将全部的.txt结尾的文件所有让git忽略掉

img

​ 何时来用的,举个例子,当咱们使用python语言的django框架来进行代码开发的时候,这个框架会自动生成一个sqlite数据库文件在项目中,其实这样项目未来在咱们提交代码的时候,不须要提交的,因此就能够将它设置为忽略就能够了。

​ gitignore文件中还有下面的一些写法:

​ img

​ 其实咱们在写项目的时候,无论你用什么开发语言,其实都会有一些你关注不到的,可是自动生成的,还不须要提交的一些文件,这里呢,GitHub给咱们提供了一个各类开发语言的一个可忽略的文件汇总,只须要将对应语言的文件中的内容拷贝到咱们的gitignore文件中就能够了,看下图,在GitHub上搜索gitingore。

​ img

​ img

​ 而后看到下面的内容: 地址: https://github.com/github/gitignore

​ img

​ 而后:

​ img

​ 注意,在公司进行开发的时候,必定要加上gitignore,否则容易将一些敏感的信息提交到远程,不安全。

十二 GitHub作任务管理相关 

1.issues

​ img

​ 而后看下图:

​ img

​ 还能够看下图,给问题打个标签,你是提的bug啊仍是文档啊仍是什么的。。。

img

​ 还能够作bug管理,好比你提的这个问题是个bug,你能够选择bug类型,而后指派给别人进行处理。

img

而后咱们再点击上面这个issues选项,会看到下面的页面:

img

2.wiki

​ 项目介绍,百科,其实写一个项目,都须要写wiki,来作项目的总体描述和说明,其余人来参与项目的时候,先看wiki。

​ img

​ 而后看到下面的页面:

​ img

相关文章
相关标签/搜索