Git笔记

Git笔记

(1)git的基本的概述

版本控制(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。这个系统可以自动帮我们备份文件的每一次更改,并且可以非常方便的恢复到任意的备份(版本)状态

​ 实现版本控制的软件有很多种类,大致可以分为本地版本控制系统、集中式版本控制系统、分布式版本控制系统

分布式版本控制系统

分布式版本控制系统,则不需要中央服务器,每个协同开发者都拥有一个完整的版本库,这么一来,任何协同开发者用的服务器发生故障,事后都可以用其它协同开发者本地仓库恢复。

由于版本库在本地计算机,也便不再受网络影响了。如果要将本地的修改,推送给其它协同开发者,还需要一台共享服务器,所有开发者通过这台共享服务器同步和更新数据。如下图所示。

这里写图片描述

(2)git的工作原理

​ 为了更好的学习Git,我们们必须了解Git管理我们文件的3种状态,分别是已提交(committed)*已修改(modified)和已暂存(staged)*,由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。

Git仓库目录是Git用来保存项目的元数据和对象数据库的地方。这是Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。

工作目录是对项目的某个版本独立提取出来的内容。这些从Git仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在Git仓库目录中。有时候也被称作“索引”(Index),不过一般说法还是叫暂存区域

这里写图片描述

基本的Git工作流程如下:

​ 1、在工作目录中修改文件。

​ 2、暂存文件,将文件的快照放入暂存区域。

​ 3、提交文件,找到暂存区域的文件,将快照永久性存储到Git仓库目录。

(3)Git基础

(3.1)配置用户信息

配置用户的意义在于记录开发者信息,以便在版本控制记录开发者的操作行为,如lion于2016-08-24解决了一个bug。

git config–global user.name “自已的名字”

git config–global user.email “自已的邮箱地址”

git config –list查看配置信息 【而且配置的信息可以在用户的目录下面看的到】

这里写图片描述

–global 配置当前用户所有仓库

–system 配置当前计算机上所有用户的所有仓库

注:配置用户只需要执行1次,可以重复使用。

  • git log可以查看修改的日志信息

这里写图片描述

(3.2)初始化仓库

  • 使用git来管理代码,首先需要获得一个仓库,进入项目该目录执行git init 这样就创建了一个隐藏的.git目录

或者将一个已有的使用git进行版本控制的仓库克隆到本地

a) git init

这里写图片描述

这里写图片描述

(3.3)查看文件状态

初始化仓库后便可以进行开发了,进入到刚刚创建好并初始为仓库的目录,添加我们开发需要的文件。

通过git status可以检测当前仓库文件的状态

这里写图片描述

注:git会忽略空的目录 Untracked files是未监视的文件

(3.4)添加文件到暂存区

假设经过一段时间的开发后,需要把已开发的部分存起来,使用git add 添加到暂存区。

git add 文件名/ 文件路径“*”或-A代表所有

这里写图片描述

放到暂存区的文件被标记成了绿色,等待提交

注:颜色是工具给添加的,目的是增加可读性并不是git统一的

这里的是一个案例:可以看出来uploads是新增加的文件夹,并且没有被监视;而index.html和css文件是修改过了的;而最上面的绿色的文件是在暂存区的

这里写图片描述

(3.5)撤销更改

又经过一段时间后发现新开发的部分有Bug,想要回到之前状态,可以使用git checkout 文件名

这里写图片描述

说明index.html再次被修改了,并被标记了红色。又经过一段时间后发现新开发的部分有Bug,想要回到之前状态,可以使用git checkout 文件名。

(3.6)提交文件

经过一个相对较长阶段开发或者一个功能开发完成了,就可以提交到本地仓库了,永久保存了。

git commit -m ‘备注信息’

这里写图片描述

将暂存区被标记成绿色的文件,全部提交到本地仓库存储(并且生成了一个新版本/存盘点)。

这时git status查看状态

这里写图片描述

(3.7)查看提交历史

反反复复开发了很多的功能了,通过git log查看一下提交的历史

这里写图片描述

我们可以查看到一次次提交记录

commit 81b1e4fc2ae178caedf4575596377a80a6f1e73f

代表一次提交的唯一ID,一般称为SHA值。可以通过这个值还原到任意的一个版本/存盘点

注:按键盘q键退出。

(3.8)回复到上一次提交的状态

通过SHA值可以回到之前某一次的提交(时光倒流)

git reset –hardc888a614e072e2这样便回到了初始化仓库的状态

这里写图片描述

这里写图片描述

(4)Git分支

在我们的现实开发中,需求往往是五花八门的,同时开发个需求的情况十分常见,比如当你正在专注开发一个功能时,突然有一个紧急的BUG需要你来修复,这个时候我们当然是希望在能够保存当前任务进度,再去修改这个BUG,等这个BUG修复完成后再继续我们的任务。如何实现呢?

在Git的使用过程中一次提交称为历史记录(版本),并且会生成一个唯一的字符串,如下图

这个串可以代表某一个历史版本(实际使用只取前面几位就可以),

值得注意的是所有的提交(commit)实际上都是在分支(branch)的基础上进行的。

这里写图片描述

这里写图片描述

注意这里的箭头表明的是继承的关系,不是方向

当我们在初始化仓库的时候(实际上是产生第1次提交时),Git会默认帮我们创建了一个master的分支,并且有指针(HEAD)指到了末端。

指针(HEAD)用来标明当前处于哪个分支的哪个版本,如上图指的处于master分支的最后1个版本。

(4.1)创建分支

这里写图片描述

创建购物车的分支,并且查看已经有的分支;当前分支在哪个上其中*就在哪个上

git branch hotfix

新的分支会在当前分支原有历史版本的结点上进行创建,我称其为子分支如下图:

这里写图片描述

新建的自分支会继承父分支的所有提交历史

(4.2)切换分支

这里写图片描述

git checkout cart

这里写图片描述

我们发现HEAD现在又指向了cart的末端

在新的分支上完成购物车的功能,但是当完成了一半的时候登录分支出现了BUG,我们把当前在cart分支上的操作进行提交,然后git checkout master上进行开发修复bug,然后提交操作保存,提交之后切换到cart分支上继续的进行开发

这里写图片描述

这次的提交历史版本就会记录在hotfix这个分支上了,并且HEAD伴随hotfix在移动。

这里写图片描述

当我们切换回master后,HEAD指向了master分支的末端,并且我们观察发现我们的文件内容还是原来的“模样”。然后进行修复bug

这里写图片描述

​ 总结:当我们git checkout branchname时,HEAD会自动指向对应分支的末端,工作目录中的源码也会随之发生改变。这个时候我们就在hotfix这个分支上修复了这个BUG,而我们原来在master分支上的操作并未受到影响

(4.3)分支的融合

这里写图片描述

git mergt master合并分支

(4.3)删除分支

git branch -d hotfix 强制的删除是D

这时用来修复BUG创建的hotfix分支已经没有用处了,我们可以将它删除。

(5)Git远程共享仓库

​ 借助一个远程仓库,大家可以共享代码、历史版本等数据,便可以解决以上遇到的所有问题,在学习远程仓库前我们先来学习git clone path这个命令。

(5.1)创建共享仓库

Git要求共享仓库是一个以.git结尾的目录。

mkdir repo.git 创建以.git结尾目录

cd repo.git 进入这个目录

gitinit –bare

初始化一个共享仓库,也叫裸仓库 注意选项–bare

这样我们就建好了一个共享的仓库,但这时这个仓库是一个空的仓库,并且不允在这个仓库中进行任何修改

列表内容

(5.2)向共享仓库共享(同步)内容

git remote 可以查看已添加的远程主机

gitremote show “主机名称”可以查看远程主机的信息

将自已开发的项目同步到这个目录中,其它开发者就可以共享你开发的项目了。

2、git
git push student@192.168.141.95:/home/student/itcast.git master

如果是先pull好了之后然后再进行开发再把东西push到远程的仓库,需要自己开一个新的分支,然后把自己的push上去git push student@192.168.141.95:/home/student/itcast.git cart

git push originhotfix:hotfix//这是个完整的写法意思就是把本地的hotfix分支放到远程的hotfix分支上

git push originhotfix:newfeature

//如果后面冒号后面的一个不写,意思就是本地的分支和远程的分支是一样的

(5.3)从共享仓库里取出内容

git pull student@192.168.141.95:/home/student/itcast.git master 之前需要提前Git init

git clone student@192.168.141.95:/home/student/itcast.git master (myprogect)后面的是我们自己起的名字

而且在clone的时候会自动的添加一个别名这个别名就叫做origin

(5,4)给远程的地址起别名

git remote add origin student@192.168.141.95:/home/student/itcast.git//其中的origin就可以代表后面的整个地址的值

(6)GitHub

这里写图片描述

这里写图片描述

远程地址特别长,我们可以给他起一个别名

git remote add origingit@github.com:Botue/repo.git

这样origin就代表 git@github.com:Botue/repo.git

当我们通过gitclone 从共享仓库获内容时,会自动帮我们添加origin到对应的仓库地址,例如:git clone git@github.com:Botue/repo.git 会自动添加origin 对应git@github.com:Botue/repo.git

这里写图片描述

将id_rsa.pub公钥的内容复制

打开gitHub的个人中心

这里写图片描述

gitLab也是一个可以通过Web界面管理仓库的网站程序,我们可以把它架设到公司自已的服务器上,实现仓库私有化,这也是大部分公司通常采用的方法,其使用方法与gitHub十分相似。

我将闲置电脑配置成了一台服务器,上面架设了gitLab程序,我们接下来的练习全部会在gitLab上进行演示。

省略很多内容…..

git checkout -b deeveloper 他健并切到developer分支

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值