Git入门教程

1、Git简介

1.1 什么是Git

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。Git的Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Git在2005年正式上线,一直到现在位置变成了版本控制中的杠把子,它与CVS,SVN等版本控制工具不同,他采用了分布式版本库的方式,不用服务器端软件支持也可使用。

1.2 Git的特点

分布式的设计,适合分布式开发,强调个体,速度快,灵活。但是在好用的同时,Git也是比较难懂的,从Git的内部机制来说,Git比市面上所有的版本控制工具都复杂。

1.3 为什么是分布式

在介绍分布式的时候首先要介绍集中式版本控制,最常见的就是SVN,SVN有一个中央的代码管理库,每次干活的时候都需要从中央服务器拿出得到最新的版本,如果服务器丢失了,那么所有的都丢失了,你本地客户端仅仅保存了当前的版本信息,并且你的所有回滚操作等都需要服务器的支持,对网络依赖很大,如果断网则无法进行其他操作。
分布式版本控制他没有中央仓库,你也可以理解为每一个人哪里的代码都是中央仓库,这样每个人的点好上面都是一个完整的版本库,这样你工作的时候就不需要一定保持网络才能干活,因为本机上面已经是一个完整的代码库了,可以自由的在本地回滚提交等。并且Git还可以将自己再工作区间做的修改提交到本地仓库作为暂存,在有网络的情况下将自己本地版本仓库推送到远程仓库进行合并高效并且可控。
集中式它们都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,git没有固定的版本号,但是有一个由哈希算法算出的id,用来回滚用的,同时也有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。
Git入门教程_第1张图片Git入门教程_第2张图片

1.4 Git的安装操作

这里选择的是Centos操作系统进行安装

# 使用 yum 命令进行安装
yum install -y git
# 安装成功后查看git版本
git --version 

安装指定的版本的git

yum install wget curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc -y
yum install  gcc perl-ExtUtils-MakeMaker -y

cd /usr/local/src
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz

tar -xvf git-2.9.5.tar.gz
cd git-2.9.5/
./configure --prefix=/usr/local/git all
make -j && make install

echo "export PATH=$PATH:/usr/local/git/bin" >> ~/.bashrc
source ~/.bashrc


1.5 Git的基础的配置

在安装完成后需要执行最简单的用户配置

# 查看 Git 配置
git config --list
# 配置全局用户名
git config --global user.name "Your Name"
# 配置全局邮箱
git config --global user.email "[email protected]"

1.6 Git的工作区、暂存区、版本库、远程库

  • 工作区: 就是你的编码区,你可以看到可以修改的文件和目录
  • **暂存区:**index/stage (在.git文件夹里面的文件,新版本为index,旧版本的为stage)用于临时存放你的改动,事实上它是一个文件,保存即将提交的列表信息
  • 本地仓库:.git文件夹,就是安全存放数据的位置,这里有你提交到所有版本的数据,其中HEAD指向最新放入仓库的版本
  • **远程仓库:**就是其他用户的仓库地址

Git入门教程_第3张图片

1.7 Git的工作流程

a. 使用 git init 命令来创建一个仓库
b. 创建一个文件,然后使用 git add 命令来提交到暂存区
c. 使用 git commit命令来把你本次的创建或者修改提交到本地仓库中
d. 使用 git push命令来把你的本地仓库内容推送到远程仓库中
e. 使用 git marge命令来进行本地仓库和远程仓库代码进行合并

2、Git基本命令操作

2.1 本地仓库的创建Repository

本地仓库其实就是一个文件夹.git文件夹,.git文件夹的创建需要使用git init命令来创建,这样才能构建出来一个符合git规范的本地仓库。总结的来说创建本地仓库有两种方式,一种是使用git inti命令来创建一个仓库,另一种是使用git clone xxxx拉取一个远程仓库来创建一个仓库。这两种都可以。

# 1. 在本地直接创建一个仓库
mkdir logic && cd logic
git inti
# 初始化空的 Git 版本库于 /root/logic/.git/

# 2. 从远程仓库拉取一个
git clone xxxx

如果你的git语言环境是中文,那么修改成为英文可以在你的~/.bashrc 或者 ~/.bash_profile文件中添加 alias git='LANG=en_GB git' 来进行语言的配置

2.2 把文件提交到暂存区

使用 touch命令创建一个文件,并使用add命令把文件提交到暂存区。提交到暂存区的文件并没有到本地仓库中,只是在暂存中,在被人marge合并代码时并不能获取到暂存区的文件或者修改内容。

# 创建一个文件
touch README.md
touch test.txt test1.txt test2.txt
# 提交文件到暂存区
git add README.md
# add 命令后面是可以跟参数 [file] [dir] 都可以
# git add . # .表示的是当前文件夹中的所有文件
git add test1.txt test2.txt  # add 多个文件

现在使用git status命令来查看文件的状态

git status
# On branch master  在master节点
#
# Initial commit
#
# Changes to be committed:   已经追再到文件并需要提交的文件
#   (use "git rm --cached ..." to unstage)
#
#	new file:   REMAD.md
#	new file:   test1.txt
#	new file:   test2.txt
#
# Untracked files: 未追踪到的文件
#   (use "git add ..." to include in what will be committed)
#
#	test.txt  这个文件没有使用add命令提交到暂存区,所以没有追踪到,

注意: 没有使用add命令暂存的文件或者文件夹,在切换分支的时候不会随着分支的切换而切换文件。如果在一个分支上面进行了 add暂存,那么切换到其他分支的时候则会不显示,当分支再次切换回来时则可以显示。

2.3 提交文件或修改到本地仓库

提交到本地仓库的命令是git commit -m,这个命令可以跟多个参数,如果不指定提交的文件,那么默认会把所有的暂存区的内容提交到本地仓库中。-m这个参数是对本次提交的描述,git是要求对每次的提交进行描述。

# 1. 使用 git commit -m 命令进行提交,提交所有add过的文件和改动
git commit -m 'fist commit'

# 2. 使用 git commit -a 命令进行提交,-a命令会把没有 add 的文件也进行提交
git commit -am 'fist commit'

2.4 Git管理中的文件的状态

git中文件分为四种状态,如下所示

  • Untracked:未跟踪,此文件在文件夹中,但并没有加入到git仓库,不参与版本控制.通过git add 状态变为Staged.
  • Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹完全一致.这种类型的文件有两种去处,如果它被修改,而变为Modified.如果使用git rm 移出版本库,则成为Untracked文件.
  • Modified:文件已修改,仅
  • 处,通过git add可进入暂存staged状态,使用git checkout,则丢弃修改过,返回unmodify状态,这个git checkout即从库中取出文件,覆盖当前修改!
  • Staged:暂存状态,执行git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态.执行git reset HEAD filename取消暂存,文件状态为Modified

查看文件状态的命令

# 使用 git status 查看文件的状态
git statu
# 或者
git status -s

2.5 查看提交日志

使用 git log命令来查看提交的日志

# 使用 git log 命令
git log

2.6 文件的回滚操作

文件回滚的命令是 git reset,文件回滚分为三种类型 --soft,--mixed,--hard三种类型

  • 使用--soft就是仅仅将头指针恢复,已经add的暂存区以及工作空间的所有东西都不变。
  • 如果使用--mixed就将头恢复掉,已经add的暂存区也会丢失掉,工作空间的代码什么的是不变的。
  • 如果使用--hard那么一切就全都恢复了,头变,aad的暂存区消失,代码什么的也恢复到以前状态。
# git log 查看日志
git log

# 使用 head 命令回滚
git reset --head 要回滚的id
# HEAD是指向当前仓库的,如果回滚到上一个版本这样即可
git reset --hard HEAD^
# HEAD~3代表回滚master前三个版本
git reset --hard HEAD~3

# 回滚单个文件
git log filename # 查看单个文件的日志
git reset 要回滚的id filename

如果你删除/修改一个文件,然后并不想提交这个删除/修改,那么只需要使用 git checkout命令即可

git checkout file # 即可重新的从当前分支里面拉取一个文件出来

2.7 查看提交的历史

git reflog # 这个命令可以查看版本库中的所有的历史包括 回滚的历史

2.8 Git的分支

git的分支是通过branch关键字来进行处理的

# 查看所有的分支
git branch -a
# 创建一个分支
git branch dev
# 创建一个新的分支并切换到创建分支
git checkout -b test
# 切换分支
git checkout dev
# 删除一个分支
git branch -D dev
# 删除一个远程的分支
git push origin --delete dev
# 修改一个分支名称
git branch -m dev devl

2.9 Git的分支合并

当我们需要合并分支的时候,被合并的分支我们首先要切换过去,比如dev分支合并到test分支上去,那么我们第一步需要切换到test分支上去,然后执行 git merge 命令即可

git checkout test
git merge dev

2.10 Git添加远程分支

如果你需要链接远程分支,那么需要你增加远程分支的url

git remote add origin https://xxxxxxx # url为你的远程仓库的地址
git push -u origin master # 提交代码到远程仓库中
# push:将本地仓库与远程仓库合并
# -u:将本地仓库分支与远程仓库分支一起合并,就是说将master的分支也提交上去,这样你就可以在远程仓库上看到你在本地仓库的master中创建了多少分支,不加这个参数只将当前的master与远程的合并,没有分支的历史记录,也不能切换分支
# origin:远程仓库的意思,如果这个仓库是远程的那么必须使用这个选项
# master:提交本地matser分支仓库

2.11 Git检出远程仓库中的代码

git clone https://xxxx # 默认检出的是master分支下面的代码
git clone -b dev https://xxxx # 检出的是dev分支的代码

3、Git高级操作以及场景实例

你可能感兴趣的:(git)