Git - 使用1

mac2022-06-30  26

文章目录

1. 简介2. Git语法文档3. 语法0. 无git前缀的命令 ( 与仓库无关的 )1. 文件的状态查询/以及用户信息设置2. 同一文件名的内容差异 - 差异显示3. 修改的文件提交到暂存区、版本库4. 工作区回滚到指定版本库的文件5. 文件的删除、重命名6. 创建 "忽略文件" -- 不会被仓库追踪的文件

1. 简介

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

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

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. 同一文件名的内容差异 - 差异显示

   

$ 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. 工作区回滚到指定版本库的文件

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

   

// 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. 版本库中没有该文件的前提下  

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

  

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

  ① one.txt在未编辑.gitignore之前已经被版本库追踪

    ② 创建one命命名的任何类型的文件查看版本库是否对其追踪

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

编辑修改并保存 one.txt

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

$ git rm --cached one.txt // 版本库取消对该文件的追踪 -- one.txt 任何修改不在被版本库追踪
最新回复(0)