GIT基本使用方式

GIT使用方式

简介

Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等。顾名思义,版本控制系统主要就是控制、协调各个版本的文档内容的一致性,这些文档包括但不限于代码文件、图片文件等等。早期SVN占据了绝大部分市场,而后来随着Git的出现,越来越多的人选择将它作为版本控制工具,社区也越来越强大。相较于SVN,最核心的区别是Git是分布式的VCS,简而言之,每一个你pull下来的Git仓库都是主仓库的一个分布式版本,仓库的内容完全一样,而SVN则不然,它需要一个中央版本库来进行集中控制。采用分布式模式的好处便是你不再依赖于网络,当有更改需要提交的时候而你又无法连接网络时,你只需要把更改提交到本地的Git仓库,最后有网络的时候再把本地仓库和远程的主仓库进行同步即可。

工作原理

  1. Workspace:工作区
  2. Index:暂存区
  3. Repository:仓库区/本地仓库
  4. Remote:远程仓库

SVN与GIT区别

SVN

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了

GIT

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了

安装配置

安装

sudo apt-get install -y git		# 安装

git version		# 查看git版本

标识

  • GIT基于分布式版本控制需要用户名与邮箱作为标识
  • 通过设置标识标明本机器所有GIT仓库都会使用该标识
  • 当然也可以针对特定的仓库设定单独的标识
git config --global user.name "SR"		# 设置全局用户名标识

git config --global user.email "srcoder@163.com"	# 设置全局邮箱标识
	
git config --list	# 检查全局配置

GIT基本使用方式

创建版本库

什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”

mkdir Desktop/git_test	# 创建git测试文件夹

git init 		# 初始化仓库

ls -al		# 查看当前文件夹文件

文件提交

jason@jason:~/Desktop/git_test$ touch readme.txt	# 创建测试文件

jason@jason:~/Desktop/git_test$ git add readme.txt 	# 添加暂存区域

jason@jason:~/Desktop/git_test$ git commit -m "提交readme.txt" # 进行提交 -m 后属于提交注释

jason@jason:~/Desktop/git_test$ git status 	# 查看当前状态
# 修改文件内容 查看文件状态

jason@jason:~/Desktop/git_test$ echo 1111 > readme.txt 	# 修改文件内容

jason@jason:~/Desktop/git_test$ git status 		# 查看修改之后的状态

# 查看被修改的内容
jason@jason:~/Desktop/git_test$ git diff readme.txt # 查看修改内容
# 提交修改之后的内容

jason@jason:~/Desktop/git_test$ git add readme.txt 
    
jason@jason:~/Desktop/git_test$ git status 

jason@jason:~/Desktop/git_test$ git commit -m "添加111到readme.txt"

jason@jason:~/Desktop/git_test$ git status 

版本回退

# 查看历史操作记录
jason@jason:~/Desktop/git_test$ git log 

jason@jason:~/Desktop/git_test$ git log --pretty=oneline # 若下图显示过多可以使用此命令

# 版本回退
jason@jason:~/Desktop/git_test$ touch test.txt

jason@jason:~/Desktop/git_test$ echo "111" > test.txt 	# 添加测试数据 

jason@jason:~/Desktop/git_test$ git add test.txt 

jason@jason:~/Desktop/git_test$ git commit  -m "添加测试文件1111"

jason@jason:~/Desktop/git_test$ git status 

jason@jason:~/Desktop/git_test$ git reset --hard HEAD^	# 版本回退

jason@jason:~/Desktop/git_test$ cat test.txt 
  • 如果要回到上上版本则git reset --hard HEAD^^依次类推
  • 如果要回退到前100个版本上述方法肯定不方便git reset --hard HEAD~100(直接跟回退的版本)
# 回退到上述111所在的版本

jason@jason:~/Desktop/git_test$ git reflog 	# 查看删除的版本号

jason@jason:~/Desktop/git_test$ git reset --hard ceb6920	# --hard后面加上想要恢复的版本号

jason@jason:~/Desktop/git_test$ cat test.txt 

工作区与暂存区

工作区

  • 就是你在电脑上看到的目录,比如目录下git_test里的文件
  • 以后在git_test文件夹下创建的文件以及文件夹都属于工作区
  • git_test下.git文件不属于工作区此时属于版本库

版本库

  • Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
  • git add把文件添加进去,实际上就是把文件修改添加到暂存区;
  • git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
  • 因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,现在,git commit就是往master分支上提交更改。
jason@jason:~/Desktop/git_test$ echo 222 >> test.txt # 写入新的数据
    
jason@jason:~/Desktop/git_test$ touch readme1.txt	# 添加新的文件

jason@jason:~/Desktop/git_test$ git status # 查看当前状态
# 将文件加入暂存区域
jason@jason:~/Desktop/git_test$ git add test.txt readme1.txt 	# 加入暂存区

jason@jason:~/Desktop/git_test$ git status 
# 一次性提交文件
jason@jason:~/Desktop/git_test$ git commit -m "提交文件"

jason@jason:~/Desktop/git_test$ git status 
    

GIT撤销修改和删除

撤销修改

未放入暂存区

jason@jason:~/Desktop/git_test$ echo 333 >> test.txt 	# 添加测试数据

jason@jason:~/Desktop/git_test$ cat test.txt

jason@jason:~/Desktop/git_test$ git checkout -- test.txt	# 撤销修改

jason@jason:~/Desktop/git_test$ cat test.txt 

放入暂存区

jason@jason:~/Desktop/git_test$ echo 444 >> test.txt 
    
jason@jason:~/Desktop/git_test$ git add test.txt 	# 加入暂存区

jason@jason:~/Desktop/git_test$ echo 555 >> test.txt 	# 添加测试数据

jason@jason:~/Desktop/git_test$ git checkout -- test.txt	# 撤销数据 若无--则切换分支

jason@jason:~/Desktop/git_test$ cat test.txt 
# 如果将上述已经加入暂存区的取消 
jason@jason:~/Desktop/git_test$ git reset HEAD 	# 清空暂存区

jason@jason:~/Desktop/git_test$ git checkout -- test.txt	# 撤销

jason@jason:~/Desktop/git_test$ cat test.txt 

删除版本

jason@jason:~/Desktop/git_test$ touch b.txt

jason@jason:~/Desktop/git_test$ git add b.txt 

jason@jason:~/Desktop/git_test$ git commit -m "add b.txt"
    
jason@jason:~/Desktop/git_test$ rm -fr b.txt  # 删除b.txt文件
    
jason@jason:~/Desktop/git_test$ git status 	
# 恢复上述删除的状态
jason@jason:~/Desktop/git_test$ git checkout -- b.txt
	
jason@jason:~/Desktop/git_test$ ls	# 查看文件
jason@jason:~/Desktop/git_test$ rm -fr b.txt

jason@jason:~/Desktop/git_test$ git add b.txt

jason@jason:~/Desktop/git_test$ git commit -m "delete b.txt"

jason@jason:~/Desktop/git_test$ git status 
原文地址:https://www.cnblogs.com/SR-Program/p/14039287.html