版本控制系统--Git

目录

1.关于Git

1.1 简介

1.2 git 与 svn 的区别

1.3 分布式与集中式的区别 

1.3.1 分布式版本控制系统

1.3.2 集中式版本控制系统

1.3.3 集中式相比分布式缺点

2. Git安装配置

2.1 linux安装

2.2 windows安装

2.3 git配置

3.Git详解

3.1 git生态

3.2 git工作流程

3.3 git基本操作

3.3.1 基本概念

3.3.2 创建仓库

3.3.3 检出仓库 

3.3.4 添加和提交

3.3.5 推送改动

3.3.6 分支管理 

3.3.7 更新与合并

3.3.8 标签

3.3.9 撤销与回退


1.关于Git

1.1 简介

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

1.2 git 与 svn 的区别

  • GIT是分布式的,SVN不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。

  • GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,cvs等的文件夹里。

  • GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。

  • GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。

  • GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。  

1.3 分布式与集中式的区别 

1.3.1 分布式版本控制系统:

      代表:git

      分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。只要提供一台电脑作为版本集中存的服务器放就够了,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它也一样干活,只是交换修改不方便而已。而每一台电脑有各自独立的开发环境,不需要联网,本地直接运行,相对集中式安全系数高很多。

1.3.2 集中式版本控制系统:

       代表:svn,cvs

       版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

1.3.3 集中式相比分布式缺点: 

1. 如果网络出现异常或者很卡,直接影响工作效率。如果是中央服务器挂了,那就集体喝茶去了。

2. 还有一种情况,各自电脑中操作的所有软件工具,都存放在一个中央服务器上(现在流行叫云服务器),只需要用各自电脑登陆连接到云服务器上,(一般服务器都是用linux),比如用ps工具,大家其实用的是云服务器中的同一个ps 软件,在使用率高的情况下,ps会出现异常,当用ps筛选颜色的时候,已经混乱,无法正常选择颜色,这个情况是我在开发中遇到的。以前我们是每个人用各自安装的ps,但是在这样的环境下用的是同一个ps软件的时候就会有bug。

 3. 安全度不高,重要的东西都放在一个中央服务器中,如果被黑,那损失就大了。

2. Git安装配置

2.1 linux安装

实验环境:Centos 7 

1. yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
2. wget https://github.com/git/git/archive/master.zip
3. unzip git-master.zip 
4. cd git-master
5. make prefix=/usr/local/git all
6. make prefix=/usr/local/git install
7. rm -rf /usr/bin/git
8. ln -s /usr/local/git/bin/git /usr/bin/git
9. git --version

2.2 windows安装

安装包下载地址:https://gitforwindows.org/

注:安装完成即可使用,提供命令行和图形界面的Git项目管理工具。也可使用IDEA等工具。

2.3 git配置

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

  • /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件,该文件默认不存在。
  • ~/.gitconfig  文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件,该文件默认不存在。
  • 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER。

此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。

3.Git详解

3.1 git生态

Git              分布式版本管理系统

Gitlab git    私库解决方案

Github git   公有库解决方案

3.2 git工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

图示:

 

3.3 git基本操作

3.3.1 基本概念

工作区(workspace): 就是你在电脑里能看到的目录。

暂存区(stage/index):工作区文件修改后,add加入暂存区。

本地仓库(local repository): 暂存区 commit 到本地仓库。

远程仓库( remote repository ):本地仓库push到远程仓库。

3.3.2 创建仓库

git init /path/dir

# dir 目录即为新创建的 git 仓库

3.3.3 检出仓库 

git clone git://github.com/gitrepos/test.git

# 在当前目录创建 test 仓库

git clone git://github.com/gitrepos/test.git mytest

#自定义仓库名

3.3.4 添加和提交

git add <filename>

git add *

#将修改好的文件添加入暂存区

git commit -m "代码提交信息"

#将暂存区的文件上传到本地仓库

 3.3.5 推送改动

git push origin master

#将本地仓库提交到远程仓库,可以将 master 换成你想要推送的任何分支。

git remote add origin <server>

#如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如上命令添加。如此你就能够将你的改动推送到所添加的服务器上去了。

3.3.6 分支管理 

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

git branch

#列出分支基本信息

git branch dev

#创建一个dev分支

git checkout -b dev

#创建一个dev分支并切换过去

git checkout master

#切换到 master 分支

git branch -d dev

#删除分支

注:除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的

3.3.7 更新与合并

git pull

#将本地仓库更新为最新改动

git merge <branch>

#将其他分支合并到当前分支,如将开发分支合并到 master 分支

注:在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。 

合并冲突参考:https://www.cnblogs.com/wangmingshun/p/5425150.html

3.3.8 标签

git tag v1.0 1b2e1d63ff

#为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如上命令创建一个叫做 v1.0 的标签,1b2e1d63ff 你想要标记的提交 ID 的前 10 位字符。如下命令和查看ID:

git log

git log --oneline --graph

 3.3.9 撤销与回退

git checkout -- readme.txt

#把  readme.txt文件在工作区的修改全部撤销,这里有两种情况:

1. readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。

2. 是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

git reset [option]  id  可回退到前后版本

option:
          --hard     三个区全部撤除
          --mixed  缓冲区和本地仓库撤除
          --soft      只撤除本地仓库,缓冲区和工作目录不改变

git reset --hard HEAD~1  #HEAD表示当前版本  HEAD~100 前一百个版本

更多回退方法:https://blog.csdn.net/fuchaosz/article/details/52170105

详细参考文档:

http://www.runoob.com/git/git-tutorial.html      

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

更多详细命令:

https://git-scm.com/docs     

猜你喜欢

转载自blog.csdn.net/rightlzc/article/details/82751917