zoukankan      html  css  js  c++  java
  • 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 
    
  • 相关阅读:
    爬虫-某游戏交易网站商品信息爬取
    爬虫-淘宝selenium模拟登录取cookie
    设计模式
    xadmin安装2
    MySQL用户授权 和 bin-log日志 详解和实战
    用Redis实现分布式锁 与 实现任务队列
    基于H5的微信支付开发详解
    静态资源文件自动压缩并替换成压缩版本(大型网站优化技术)
    IP、TCP和DNS与HTTP的密切关系
    减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
  • 原文地址:https://www.cnblogs.com/SR-Program/p/14039287.html
Copyright © 2011-2022 走看看