03-git的基本命令

1.文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改,
    而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git
    add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git
    checkout即从库中取出文件, 覆盖当前修改 !
  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致,
    文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

2.基本操作

#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

# 添加所有文件到暂存区
git add .  
                
#提交暂存区中的内容到本地仓库 -m 提交信息
 git commit -m "消息内容"    

demo

XHAI@DESKTOP-GMUEQ3J MINGW64 /d/gitCode/fileState
$ git init
Initialized empty Git repository in D:/gitCode/fileState/.git/

XHAI@DESKTOP-GMUEQ3J MINGW64 /d/gitCode/fileState (master)
$ touch test.c

XHAI@DESKTOP-GMUEQ3J MINGW64 /d/gitCode/fileState (master)
$ git status test.c

在这里插入图片描述
此时文件没有加入git库,需要使用命令git add .将文件所有文件加入库中
在这里插入图片描述
执行git commit则将修改同步到库中
方法1:git commit -m "你想添加的信息内容

XHAI@DESKTOP-GMUEQ3J MINGW64 /d/gitCode/fileState (master)
$ git commit -m "new file test.c"
[master (root-commit) ba9698c] new file test.c
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 test.c

方法2:git commit,执行之后,会跳出一个界面,你可以往里面添加你所需要的内容(我安装时默认选择的是notepad++编辑器,所以跳出的界面是这个)
在这里插入图片描述
编辑完描述信息之后就能保存退出啦

XHAI@DESKTOP-GMUEQ3J MINGW64 /d/gitCode/setName_Email (master)
$ git commit
[master (root-commit) 37af7f9] My first commit. new file good.c
 1 file changed, 3 insertions(+)
 create mode 100644 test.c

在这里插入图片描述

版本的前进与后退

1.查看历史记录

git log

在这里插入图片描述
当修改的文件过多时,使用该命令的话,一页显示不完,得分页显示,十分不美观。使用下面这条命令可以解决这个办法
多屏显示控制方式:空格向下翻页 、b向上翻页、q退出

git log --pretty=oneline

在这里插入图片描述
也可以省略pretty

git log --oneline  //只显示HEAD后面的

在这里插入图片描述

git reflog //显示移动的步数

在这里插入图片描述
HEAD@{移动到当前版本需要的步数}

2. 前进或者后退当前的版本(通过移动HADE指针实现)
2.1 基于索引值前进后退
git reset --hard [局部索引值]

$ git reset --hard 4f7d2cc

在这里插入图片描述
2.2 基于^符号(只能够后退)

git reset --hard HEAD^  //后面跟着几个^就后退几步

2.3 基于~符号(只能后退)

git reset --hard HEAD~3  //后面~符号后面的数字是多少就后退多少步

2.4 通过命令git help reset 查看reset的其他参数

  • –soft参数:仅仅在本地库移动HEAD指针(不会修改本地文件)
  • –mixed参数:在本地库移动HEAD指针,重置暂存区(不会修改本地文件)
  • –hard参数:在本地库移动HEAD指针、重置暂存区、重置工作区。

永久删除文件后找回

删除文件

rm test2.c

查看被删除文件的状态

$ git status test2.c
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    test2.c

no changes added to commit (use "git add" and/or "git commit -a")

通过(use “git add/rm …” to update what will be committed)这一个信息可以知道可以输入git add test2.c找回被删除的文件
找回之后上传本地库

XHAI@DESKTOP-GMUEQ3J MINGW64 /d/gitCode/setName_Email (master)
$ git commit -m "delate after" test2.c
[master 6d69834] delate after
 1 file changed, 2 deletions(-)
 delete mode 100644 test2.c

在这里插入图片描述
通过查找发现,删除的文件并没有从本地库删除。

添加到暂存区的删除文件找回
test3.c已经上传至本地库
在这里插入图片描述
接下来删除它

 rm test3.c

只将test3.c添加值暂缓区

git add test3.c

查看此时的文件状态
在这里插入图片描述
通过命令git reset --hard HEAD找回文件

XHAI@DESKTOP-GMUEQ3J MINGW64 /d/gitCode/setName_Email (master)
$ git reset --hard HEAD
HEAD is now at 533a77a delate before test3

在这里插入图片描述
总结:删除文件并找回
前提:删除前,文件已经提交到了本地库
操作:git reset --hard [指针位置]

  • 删除操作已经提交到本地库:指针位置指向历史记录
  • 删除操作尚未提交到本地库:指针位置使用HEAD

比较文件差异

git diff [文件名]
将工作区中的文件和暂存区进行比较
在这里插入图片描述
git diff [本地库中的历史版本] [文件名]
将工作区中的文件和本地库历史记录比较
在这里插入图片描述

git diff

不带文件名比较多个文件
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值