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,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了

安装配置#

安装#

Copy
sudo apt-get install -y git # 安装 git version # 查看git版本

标识#

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

GIT基本使用方式#

创建版本库#

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

Copy
mkdir Desktop/git_test # 创建git测试文件夹 git init # 初始化仓库 ls -al # 查看当前文件夹文件

文件提交#

Copy
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 # 查看当前状态
Copy
# 修改文件内容 查看文件状态 jason@jason:~/Desktop/git_test$ echo 1111 > readme.txt # 修改文件内容 jason@jason:~/Desktop/git_test$ git status # 查看修改之后的状态
Copy
# 查看被修改的内容 jason@jason:~/Desktop/git_test$ git diff readme.txt # 查看修改内容
Copy
# 提交修改之后的内容 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

版本回退#

Copy
# 查看历史操作记录 jason@jason:~/Desktop/git_test$ git log jason@jason:~/Desktop/git_test$ git log --pretty=oneline # 若下图显示过多可以使用此命令

Copy
# 版本回退 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(直接跟回退的版本)
Copy
# 回退到上述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分支上提交更改。
Copy
jason@jason:~/Desktop/git_test$ echo 222 >> test.txt # 写入新的数据 jason@jason:~/Desktop/git_test$ touch readme1.txt # 添加新的文件 jason@jason:~/Desktop/git_test$ git status # 查看当前状态
Copy
# 将文件加入暂存区域 jason@jason:~/Desktop/git_test$ git add test.txt readme1.txt # 加入暂存区 jason@jason:~/Desktop/git_test$ git status
Copy
# 一次性提交文件 jason@jason:~/Desktop/git_test$ git commit -m "提交文件" jason@jason:~/Desktop/git_test$ git status

GIT撤销修改和删除#

撤销修改#

未放入暂存区#

Copy
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

放入暂存区#

Copy
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
Copy
# 如果将上述已经加入暂存区的取消  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

删除版本#

Copy
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
Copy
# 恢复上述删除的状态 jason@jason:~/Desktop/git_test$ git checkout -- b.txt jason@jason:~/Desktop/git_test$ ls # 查看文件
Copy
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
posted @   SR丶  阅读(134)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-11-25 爬虫基础简介
点击右上角即可分享
微信分享提示
CONTENTS