Git - 使用1

1. 简介
  • 用来记录一个文件的修改情况,可随时的还原不同状态下的文件内容 → 而无需自己手动的保存不同修改状态下的文件。

  • 分布式进行存储,合并工作,每人电脑上都存储了完整的文件修改记录,无需联网既可以工作
git文件类型
untracked - 未被仓库追踪
modified - 文件被修改-还没放入暂存区
staged - 暂存区未commit的文件
committed - 文件提交到版本库中
deleted - 已删除的文件 - 手动、命令行删除此状态分别在工作区中、暂存区中,所以需要add、commit提交的版本库中
renamed - 重命名文件 - 此文件状态在暂存区中
git存储分区结构
working directory 工作目录
staged index 暂存区
repository 版本库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s0RPjJA2-1570009574808)(en-resource://database/3695:1)]

2. Git语法文档
$ git help 命令    //  自动打开浏览器展示 '命令'的使用语法
$ git --help 命令    // 一样的作用

3. 语法

参数缩写 → ‘-缩写的参数’、参数不缩写 → '–参数’

0. 无git前缀的命令 ( 与仓库无关的 )
$ pwd       // 显示当前目录( print working directory )
$  ls -a     //  显示当前目录下的文件( 包括隐藏文件 )
$ ls            // 显示当前目录下的文件( 不包括隐藏的文件 )



$ > 文件名.文件类型                     // 当前目录下 创建 新文件
$ > touch 文件名.文件类型  

$ mkdir 目录名                            // 当前目录下 创建 新目录

$ mv 文件1 目录1                          // 文件1 剪切到  目录1下
$ echo '内容1' >> 文件1              // 内容1 添加到 文件1 里面   -- 目录输写:“目录名/”
$ echo '内容2' > 文件1              // 内容1 覆盖  文件1 里面的内容
$ vim 文件1                          // 在 bash中 查看并编辑文件1

$ cat 文件1                           // 在 bash中 显示 文件1的内容

$ rm -rf 文件路径                // 删除文件、文件夹

1. 文件的状态查询/以及用户信息设置
// 设置用户信息( 邮箱、用户名 )
git config --global username 用户名  
git config --global useremail 邮箱     

//
git  config --list    //显示当前git所有配置的信息    --- 按键盘q来退出当前的输出,转入等待下一条输出




$ git reflog   // 查看从建仓库开始之后用户使用的所有命令记录 -- 版本号、命令、描述

$ git log    // 显示所有提交到版本库的详细记录 -- 作者、日期、记录编号、版本描述
$ git log -n        // 前n条提交记录
$ git log --oneline   // 显示所有提交到版本库的记录 -- 仅包括记录编号以及版本描述
$ gitk                          //  可视化工具查看文件的的commit 记录

2. 同一文件名的内容差异 - 差异显示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w2at3uul-1570009574812)(en-resource://database/3821:1)]

$ git status  // 显示当前状态下还有什么文件没有放入版本库中,即当前哪些文件被修改

$ git diff    // 工作区与暂存区的差异
$ git diff --cached / staged        // 暂存区与版本库的差异

$ git diff head -- 文件           // 版本库最新版本的文件与工作区 进行比较
$ git diff 版本号 --  文件   // 比较指定版本库文件与当前工作区文件内容的差异

$ git diff 版本号1  版本号2     // 比较两个版本文件的差异

$ git diff 分支名        // 比较当前分支与'分支名'分支的差异

$ git show 版本号        // 在 bash 查看该版本下的的所有文件的内容

3. 修改的文件提交到暂存区、版本库

切记暂存区的文件已经存储了版本库的最新版本


$ git init    //在当前目录下新建一个空仓库(.git) 类型(隐藏的.git文件目录) --  顾名思义文件还未被追踪

$ git init --bare     // 裸仓库-只保存历史提交的版本信息  创建的仓库不包含工作区--即不能在目录下使用一般的Git命令   ----  没有所被修改的文件、只记录修改的信息

$ git add  文件/.(所有文件)     // 把当前被修改的文件放在暂存区中

$ git commit -m "描述信息"    // 把暂存区的文件放入版本库中,并描述其此次版本的变化

$ git commit -am '描述信息'     // 工作区的文件放入版本库中

$ git commit --amend    // 撤销上次提交,并将暂存区文件重新提交,且可只修改版本变化的描述

$ git restore --staged 文件    // 暂存区的文件被撤销,转为工作区文件

$ git reset head/版本号 文件       // 直接把暂存区同名的文件restore为工作区 -- 把该版本库文件放置在工作区底层,之前修改的部分在这底层之上 -- 即当前版本为版本号下的文件,不过被之前的修改覆盖了,只要用checkout删除被修改的部分,即文件恢复到版本库的文件

注意commit之后,暂存区并没有清空,依然保留了先前所有放入暂存区的信息

4. 工作区回滚到指定版本库的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fvtCt9qW-1570009574829)(en-resource://database/3819:1)]

即每个版本号实质对应的是每个时期下所有文件的状态内容



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wPFmTcvr-1570009574833)(en-resource://database/3823:1)]


// checkout - 复制一份最新的文件到某个区

$ git checkout --   文件/.( 所有文件 )       // 暂存区最新的文件 复制且覆盖到   工作区
$ git checkout head --   文件/.( 所有文件 )    //  版本库的最新版本的文件  复制且覆盖到   工作区、暂存区


$ git reset --hard head~n    //head是个指针,指向最新的版本库文件,0表示当前文件,1表示上一个文件,依次类推  ---  工作区与暂存区的文件内容回滚到版本号的文件


$ git reset  --mixed 版本号    // 暂存区内容回滚到版本号的内容



$ git reset  --hard 版本号   //  暂存区、工作区回滚到指定版本


// 两者作用一样,指定文件参数的只有  --mixed参数可用
$ git reset --mixed 文件  
$ git reset 文件

reset
无文件参数
--soft → 将head指针指向某个版本,意味着当前head指针之后的版本看不见
--mixed → soft的作用、以及将暂存区文件修改为版本号的文件
--hard → mixed的作用、以及将工作区文件修改为版本号的文件
有文件参数
--mixed → 指定版本号的的指定文件恢复到暂存区

5. 文件的删除、重命名
// 直接选中所需要删除的文件删除、deleted文件状态是在 工作区



$ git rm 文件          // 删除未修改状态的文件、且deleted文件状态 放置在  暂存区 --  必须是未修改的状态

$ git rm --cached 文件   // 将暂存区的文件删除 前提:工作区文件必须与暂存区文件内容一致  -- 有deleted

$ git rm --force 文件     // 强行将本地文件删除,即使工作区有文件内容改动 且没有delete状态,即此次的删除的文件不会有机会留在版本库中

$ git mv 原文件名 新文件名    // renamed文件状态 放置在 暂存区 中 -- 实质文件名已经更改,版本库并无对此新文件的追踪  ----  一旦restore 新文件名则就会发现 此新文件并没有被版本库追踪,需要自己 add commit被版本库追踪
// renameed状态的文件一旦被提交,实质一同把新文件名被版本库追踪

6. 创建 “忽略文件” – 不会被仓库追踪的文件

  语法结构

// 创建文件
$ touch 文件
$ > 文件

// 删除文件
rm -rf 文件
$ touch .gitignore      // 创建"忽略文件"    --- 在里面填写不需要被仓库追踪的文件

$ vim .gitignore     // 编辑文件    忽略书写格式:文件名 、目录名\

ESC :wq     // 保存并退出Vim编辑

  

1. 版本库中没有该文件的前提下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SUzxA6kn-1570009574836)(en-resource://database/3803:1)]

" * " 在此表示忽略所有以lrc、lrc2命名的所有文件类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e0KgU8SS-1570009574841)(en-resource://database/3805:1)]

  

2. 版本库中在创建.gitignore之前文件已经被追踪

  ① one.txt在未编辑.gitignore之前已经被版本库追踪
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dDAb6vJF-1570009574848)(en-resource://database/3807:1)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GqVdZWPz-1570009574853)(en-resource://database/3813:1)]


  ② 创建one命命名的任何类型的文件查看版本库是否对其追踪
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a1rP9aN2-1570009574855)(en-resource://database/3815:1)]


  ③ 如果修改、删除one.txt该文件、依然会被追踪 – 因为其已经被版本库追踪了在①下

编辑修改并保存 one.txt 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S7CHYXyj-1570009574864)(en-resource://database/3817:1)]


  ④ 在版本库中删除对one.txt的追踪

$ git rm --cached one.txt       // 版本库取消对该文件的追踪 -- one.txt 任何修改不在被版本库追踪
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值