git的基本操作

git 简介

git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。git百科

git 的两大特点
  • 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。
  • 分布式: Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。
    首先找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个服务器仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉去别人的提交。可以自己搭建这台服务器,也可以使用GitHub网站。
分布式与集中式系统的区别
  • 分布式与集中式之中都有中央服务器,它们的区别是:
  • 当中央服务器瘫痪时,分布式系统上的程序依然能够继续执行,但是在集中式服务器中,当中央服务器瘫痪时,程序则不能执行

git 的安装与配置

这里我所使用的操作系统是linux中的ubuntu。
安装命令:

sudo apt-get install git

安装完成之后,运行

git

可以查看git是否被安装
在这里插入图片描述

git 使用

1 . 初始化版本目录,首先创建一个目录test,然后执行如下命令:

git init

在这里插入图片描述
这样在test目录中就会有一个.git的隐藏目录,用来控制目录版本

  1. 在test目录下创建一个文件code.txt, 然后再文件中随意编辑一些内容(忽略我的三脚猫英文)

在这里插入图片描述
3. 使用如下两条命令可以创建一个版本

git add code.txt  # 将文件添加到暂存区中
git commit -m "版本1"  # 提交,注意,引号中是填写此代码的说明信息
  1. 使用如下命令可以查看版本记录
git log

在这里插入图片描述
这里对git log命令做一个说明, 这里的版本序列号可以注意一下,后面会有用

在这里插入图片描述

版本回退

此时我们的code.txt文件时这样的。
在这里插入图片描述
简单的编辑一下,再将它提交,并使用git log命令查看记录
在这里插入图片描述
可以看到,新编辑的code.txt比原来的文件多了一行,但是此时若我们想回到原来的版本,使用git的方法应该怎么做呢,有两种方法

  1. git reset --hard HEAD^ # 返回上一个版本
    其中HEAD表示当前最新版本,HEAD^ 表示当前版本的前一个版本,HEAD^^表示当前版本的前前个版本,也可使用HEAD~1 表示当前版本的前一个版本,HEAD~100表示当前版本的前100个版本
    HEAD^等价于HEAD~1 # 两个表达式相等

    在这里插入图片描述

    1. 执行命令后使用git log查看版本记录,发现现在只能看到版本1的记录,
      cat code.txt查看文件内容,现在只有一行,也就是第一个版本中的版本中的code.txt中的内容

    2. 加入我们现在又想回到版本2,这个时候怎么办?
      可以使用如下命令:

git reset --hard 版本序列号

版本序列号就是commit 后面的一串字符,不需要全部选取,只需选择前几个字符进行复制即可
4.假如我们已经退出终端,目前是版本1,但是想要回到版本2,应该怎么办呢?
可以使用如下命令查看历史操作记录

 git reflog

运行此命令后,终端会显示出对应版本序列号的前几个字符,以及版本说明,此时在使用

git reset --hard 版本2序列号

命令即可回到版本2
在这里插入图片描述

git的工作区

  • git的工作区是指当前目录中有.git的隐藏文件的目录,一般来说,编辑git版本都在工作区中进行,比如我们的test目录,就是一个工作区
    在这里插入图片描述

git版本库

工作区有一个隐藏目录.git,这个不是工作区,而是git的版本库。

  • git的版本库里存在许多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有git为我们创建的第一个分支master,以及指向master的一个指针叫HEAD。
  • 因为我们创建git版本库时,git自动为我们创建了唯一一个master分支,所以,git commit 就是往master分支上提交更改
  • 把文件往git版本库里添加的时候,是分两步执行的:
  • (1)下面在test目录下在创建一个文件code2.txt,然后编辑内容如下
    在这里插入图片描述
  • (2)然后再次编辑code.txt内容
    在这里插入图片描述
  • (3)使用如下命令查看当前工作树的状态
git status

在这里插入图片描述
上面提示我们code.txt被修改,而code2.txt没有被跟踪

  • (4) 我们使用如下命令把code.txt和code2.txt加入到缓存区,然后执行git status命令, 结果如下:
    在这里插入图片描述
    git add命令是把所有提交的修改存放在暂存区。
  • (5)执行git commit 就可以一次性把 暂存区的所有修改提交到分支创建一个版本。当文件被提交之后,再使用git status查看工作树状态,此时可以看到master分支已经变为一个干净的工作区了。
    在这里插入图片描述

在这里插入图片描述

git 管理修改

git管理的文件的修改,他只会提交暂存区的修改来创建版本。
(1) 编辑code.txt,并使用 git add 命令将其添加到暂存区中
在这里插入图片描述
(2) 继续编辑code.txt 并在其中添加一行。
(3) git commit创建一个版本,并使用git status查看,发现第二次修改的code。txt内容之后,并没有将其添加到工作区,所以常见版本的时候并没有被提交
在这里插入图片描述

git 撤销修改

  1. git撤销修改
    (1) 继续上面的操作,提示我们可以使用git checkout – <文件> 来撤销修改(可以配合cat命令来查看文件变化)
    在这里插入图片描述
    (2) 我们继续编辑code.txt,并在其中添加如下内容(the new line),并将其添加到暂存区(git add <文件>)
    在这里插入图片描述
    (3) git同样告诉我们,用命令 git reset HEAD <文件> 可以把暂存区的修改撤销掉,重新放回工作区。
    在这里插入图片描述
    (4)现在若想丢弃code.txt的修改,执行如下命令即可。
    git checkout -- <文件>
        cat <文件>
        git status

现在,如果你不但改错了东西,还从暂存区提交到了版本库,则需要进行版本回退。

git管理修改小结
场景1:当你该乱了工作区某个文件的内容,想直接丢弃工作区的修改是
用命令 git checkout -- <文件>

场景2: 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,像丢弃修改,分两步,第一步用命令 git reset HEAD <文件>就回到了场景1,第二步按场景1来操作。

场景3: 已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节

git 对比文件的不同

一、对比工作区和某个版本中的文件的不同
(1)继续编辑文件code.txt,再其中添加一行内容
在这里插入图片描述
(2) 现在要对比工作区中code.txt和HEAD版本中code.txt的不同。使用如下命令
使用 git diff HEAD – <文件> 即可
在这里插入图片描述
(3)使用如下命令丢弃工作区的改动

git checkout -- code.txt

在这里插入图片描述

二、对不不同版本的文件的不同

git diff HEAD HEAD^ -- <文件>

在这里插入图片描述

git 删除文件

在linux中可以使用rm <文件>的方式来删除文件,但是当这个文件在git工作区里进行此类方法操作时,文件并不能彻底删除,可以使用 git checkout – <文件> 即可恢复文件。
在这里插入图片描述
所以我们有两种方法:
1. 第一种要从版本库中删除该文件,那就用命令 git rm删掉,并且使用 git commit, 这样文件就删除了
在这里插入图片描述 2. 另一种情况是删错了, 可以使用 git checkout --<文件>, 这样文件就恢复了
在这里插入图片描述

git删除文件小结:

命令git rm用于删除一个文件,如果一个文件已经被提交到版本库,那么永远不用担心误删,但是要小心,你只能恢复文件到最新版本,而且会丢失最近一次提交后你所修改的内容。

git的基本操作总结

为了更好和系统的整理这些知识点,我做了一个知识脑图,用于更加便捷的复习,理解起来也更加容易。
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值