1. Git的基本使用

一、安装Git

Linux

sudo apt-get install git

Mac

  • 安装homebrew,通过homebrew安装。

    参考文档:http://brew.sh/

  • 安装Xcode,选择菜单"Xcode->Preferences",在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

Windows

git官网下载安装程序,傻瓜式安装即可。

安装完成后在开始菜单里面找到"Git->GIt Bash",若弹出一个命令窗口,即说明安装成功。

image-20210122174619168

设置git:

git config --global user.name "Your Name"
git config --global user.email "Your Email"

Note:这里的–global参数是对机器上的所有Git仓库使用该配置

二、Git的基本使用

创建版本库

  • 创建一个空目录,该目录为以后写代码或文件的地方

    mkdir git_study
    cd git_study
    
  • 初始化git仓库

    git init
    ls -ah
    

    初始化后在git_study文件夹下面生成了一个.git隐藏文件,该文件是用来跟踪管理版本库的。

    image-20210123191951078

向版本库中添加文件

  1. 编写一个新的文件readme.txt,内容如下:

    image-20210123192358866

  2. 使用git add命令将文件添加到仓库:

    git add readme.txt
    

    image-20210123192738623

    执行完该命令后没有任何显示即说明添加成功。

  3. 使用git commit命令把已经添加的文件提交到仓库:

    git commit -m "worte a readme file"
    

    image-20210123201958907

    Note:-m参数后面输入的是本次提交的说明,可以任意输入,最好将本次提交所更改的内容用简短的语句写出来,便于查找。

查看仓库状态及文件差异

  1. 首先将readme.txt文件修改,修改后的内容如下所示:

    image-20210123202517823

  2. 这时,我们可以使用git status命令来查看仓库当前的状态:

    image-20210123202737401

    上面的输出信息说明:readme.txt文件被修改过了,但是还没有加入到仓库中。

  3. 如果忘了修改的具体内容的话,可以通过git diff命令来查看具体的修改内容:

    git diff readme.txt
    

    image-20210123203247218

    从上面的输出信息可以看到,在原来的基础上增加了一句话。

    Note:在"git diff"命令的输出结果中,一行之前若果是减号,则说明改行被删除;一行之前如果是加号,则说明该行被添加;一行前面什么也没有,则说明改行没有发生改动。

  4. 将被改动的文件提交到仓库:

    git add readme.txt
    

    在提交之前,可以通过git status来查看当前仓库的状态:

    image-20210123204027322

    输出的信息表示当前的修改已经被添加(或者可以说是保存在了要提交到仓库的文件空间中)

    git commit -m "add second line"
    

    image-20210123204347803

    将当前修改提交后再查看仓库的状态显示:工作区是干净的。

版本回退

  1. 如果忘了以前对该仓库中的文件都做了哪些修改的话,可以使用git log命令来查看历史记录:

    image-20210123205820382

    Notes:

    • 参数 --pretty=oneline可以使输出每次的修改信息缩短到一行

      image-20210123210051643

    • commit后面黄色的遗传十六进制数时每次对应的版本号,使用SHA1计算得来。

  2. 退回到"wrote a new line"版本:

    首先需要知道:

    • 在git中,用HEAD表示当前的版本
    • HEAD^表示上一个版本,以此类推
    • 若回退的半本书较多,可以写成head~num,其中num为回退的版本数

    现在,就可以使用git reset命令来实现版本的回退了:

    image-20210123211327673

    可以看到,现在的文件信息已将变为了上个版本中的内容

    这时,查看一下历史记录:

    image-20210123211729155

    可以看到历史记录中没有了"add second line"的记录

    如果想回到"add second line"这个版本的话,可以指定版本号(版本号从前面的记录中找)来实现回退:

    image-20210123212147013

    可以看到,文件内容回来了。

    如果找不到以前的版本号,可以使用git reflog命令来查看历史使用过的命令:

    image-20210123212446195

    这样就可以看到以前的版本号了。

  3. git版本回退的原理:

    在git内部,有一个HEAD指针指向当前的版本:

    image-20210123213215960

    当版本回退时,只需要将指针指向"wrote a new line"即可:

    image-20210123213401896

两个重要的区:工作区和暂存区

工作区(Working Directory)

在一开始使用git init初始化的目录

版本库(Reponsitory)

在工作区中有一个.git的隐藏文件,这就是版本库。

在版本库中有暂存区(stage或者叫index)、git自动为我们创建的第一个分支–master以及指向master的一个指针–HEAD。

暂存区(stage)

用于保存文件的修改并将所有被保存的修改一次性提交到当前所在的分支。

工作区、暂存区以及master之间的关系

image-20210124010706440

在向仓库中添加的时候,分为两个步骤:

  1. 使用git add将修改添加到暂存区中;
  2. 使用git commit将更改提交到当前分支。

管理修改

Git在本质上是对修改进行管理和跟踪的,而非文件。

所谓修改,就是相对于之前的工作空间,你所作出的一系列操作,包括在文件中新增加一行,删除了一行,更改了某些子,或是在工作空间中添加了一个新的文件等等。

实例:

  1. 对readme.txt 进行修改:

    image-20210124013759359

  2. 将修改添加到暂存区:

    image-20210124013908897

  3. 对readme.txt进行第二次修改:

    image-20210124014116607

  4. 提交更改并查看工作区状态:

    image-20210124014224521

    显示还有修改没有被提交

  5. 使用git diff HEAD -- readme.txt命令查看当前版本与文件的区别:

    image-20210124014613701

    ​ 看到第二次的修改没有被提交。

  6. 原因:

    在第一次修改后,将修改添加到暂存区中,在第二次修改后,没有add修改,而是直接commit,导致第二次修改没有保存就被提交。

撤销修改

使用git checkout -- file可以丢弃对工作区的修改

Note:这里的两个杠非常重要,有杠表示撤销工作区的修改,没杠表示切换分支的命令。

文件被修改后未添加到暂存区的情形:

  1. 在readme.txt中添加一句话:

    image-20210130094753074

  2. 查看此时的工作区状态:

    image-20210130095014302

  3. 执行git checkout -- readme.txt命令后查看当前工作区的状态:

    image-20210130095147900

    Note:这里的撤销有两种情况:
    1.readme.txt自修改后还没有被放到暂存区,则撤销后就回到和版本库中最新的版本相同的状态;
    2.readme.txt已经添加到暂存区,然后对其做了修改,则撤销后就回到添加到暂存区后的状态。
    
  4. 查看一下文件内容:

    image-20210130095611345

    可以看到,文件中被修改的内容已经被撤销了。

文件被修改后已经添加到暂存区的情形:

  1. 修改文件内容,并将修改保存到暂存区:

    image-20210130100351781

  2. 查看工作区的状态:

    image-20210130100437577

    可以看到git提示我们可以使用git restore --stage file命令来取消在工作区的暂存,重新放回工作区(也可以使用git reset HEAD file命令);

  3. 执行撤销修改的命令:

    image-20210130100836394

    文件的修改从暂存区回到了工作区,如果想继续删除修改,则可以使用git checkout -- file命令来删除工作区中的修改。

文件提交到版本库时想撤销本次提交(前提是没有推送到远程库):

使用git reset命令,将版本回退。

删除文件

  1. 创建一个新的文件text.txt,并将其提交到版本库中;

  2. 使用rm命令将改为年间删除;

  3. 此时工作区的状态为:

    image-20210130102321052

    这里分为了两种情况:

    • 如果时你确实要将该文件删除,那么应使用git rmgit commit命令将文件彻底删除:

      image-20210130103153630

    • 若果是你将文件误删了,可以使用git checkout -- text.txt将文件恢复为最新的版本:

      Note:这里只能恢复到版本库中的最新版本,你会丢失最近一次提交后你的修改内容。
      

      image-20210130103030816

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值