Git学习的一点理解

Git

简单命令行控制

  • 创建git版本库 git init

  • 将文件添加到 git git add 文件名

  • 提到本地仓库 git commit -m “版本说明” -m是版本说明 (注意一次commit可以把缓存区里面所有改动的文件全部提交)

  • 查看本地仓库状态 git status 是否有文件有过修改还没被提交或者所有修改的文件都已经被提交c

  • 查看某个文件具体的更改信息 git diff 文件名

  • 查看提交记录 git log

  • 版本回退(必须是保存在本地仓库中的才可以回退,也就是commit过的)

    git reset --hard HEAD^   
    HEAD指针指向当前提交节点 HEAD^ 上一个提交 HEAD^^上上个提交 HEAD~3 前三个充电  HEAD~100 前第100个提交
    
    --hard 参数:
    
    但是假如我回退之后我又想看之前最后提交的那个,怎么办?
    假如命令行没有关掉,我可以看得到最后一次提交的id
    git reset --hard 1094a(id可以不写全,只要前几位就可以唯一确定一个的时候,git会自动找到他.) 
    
    但是假如我把这个命令行窗口已经关闭了或者电脑关机过了,那下次我怎么回退呢?
    
    git reflog 打印所有节点上的操作命令记录,这样就可以看的道每个节点上面操作过什么.
    
  • 概念理解:

    work directory 工作目录 也就是那个文件夹
    .git  版本库
    stage 暂存区  add将文件添加到暂存区
    本地仓库  commit将文件从暂存区所有文件提交到本地仓库
    本地仓库中有不同的分支,有一个master主分支,这是git自动帮我们创建对
    

GIT PRO书籍学习:

1.git基础概念

  • git是一个分布式版本管理(VCS)系统,他是基于快照流,而不是基于修改流.

  • 几乎所有的操作都可以本地进行,因为有一个本地仓库

  • git所有文件在存储前都计算校验和,然后以校验和来引用,计算校验和的机制叫做SHA-1散列,是一个由40位16进制组成的字符串.\

  • 三种状态:

    • 已提交(commited)
    • 已修改(modified) 已经修改了文件,但是还没保存到数据库中
    • 已暂存(staged) 对一个已修改的文件做了版本标记,使之包含在下次提交的快照中
    • 如果 Git 目录中保存着特定版本的文件,就属于 已提交 状态。 如果文件已修改并放入暂存区,就属于 已暂存 状 态。 如果自上次检出后,作了修改但还没有放到暂存区域,就是 已修改 状态。
  • 三个区:

    • 工作区
      • 工作区是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上 供你使用或修改
    • 暂存区
      • 暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索 引”,不过一般说法还是叫“暂存区”。
    • git目录
      • Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆 仓库时,复制的就是这里的数据
    • image-20200915092747817
  • 更改配置信息:

    git有三级配置信息,第一个是etc/gitconfig,这个是针对本机上面所有的git的配置信息,第二个就是用户家目录下的 ~/.gitconfig或者~/.config/git/config,针对当前用户,但是你可以添加--global,这样就会对本机上所有仓库生效.最后一个就是每一个git仓库下的.git/config,对于该文件你可以传递--local让git强制读取此文件作为配置信息,虽然一般默认就是这个文件.后面的每一个级别的配置都优先于前面的配置.
    
    查看配置以及他们所在的文件 git config --list --show-origin
    修改用户名和email   git config --global user.name "" git config --globle user.email 482195983@qq.com
    
    修改默认的文本编辑器  git config --global core.editor "'C:/Program
    Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"  以修改位notepad++为例
    
    查看所有配置信息
    	git config --list
    查看某一项配置
    	git config <key> 例如 git config user.name
    查看某一变量的原始值
    	git config --show-origin <key>
    
    
  • 获取对某命令的帮助: git help 或者 git --help

2.GIT基础操作

  • 在已存在的目录初始化仓库 git init

  • 克隆已经存在的仓库 git clone 路径 [克隆到本地的目录名]

  • 文件状态转换:

    image-20200915140908149

  • 查看仓库中各文件的状态 git status

    以更为紧凑的方式输出状态信息 git status -s 或者 --shor
    注意  输出结果分为三列 前面状态两列 文件名一列
    第一列 表示 暂存区状态 第二列表示工作区状态
    
    例如下面的第一个REAdME 文件 ,就是表示在工作区中已经修改,但是尚未保存到暂存区
    第二个Rakefile文件,在暂存区里面的已经被修改过了,也就是将修改添加到暂存区了,但是工作区还有修改,也就是将一份前面已经有提交记录的文件,修改后添加到了暂存区,然后又在工作区中修改了
    
    第三个 lib/git.rb 表示在暂存区中被添加,详细也就是第一次追踪此文件,暂时尚未有过提交,还是被追踪状态.具体请看上面的状态转换图
    
    第四个lib/simplegit.rb 表示在暂存区已经有过修改了,也就是这个文件之前已经被提交(commit)过了,然后这次的修改也已经保存到了暂存区
    
    ?? 就是表示还没有开始追踪这个文件
    

    image-20200915144903915

  • 使文件被追踪(track),使文件加入git的版本管理(也就是加入暂存区),最精确的表达就是 将文件加入下一次提交中

    • git add 文件名或者仓库内的文件夹名(git会自动递归加入所有)

    • 注意,当你某个文件提交到暂存区后,我又把它修改了,那么会出现什么情况?

      image-20200915141804949

      git status显示这个文件既在暂存区,也在已修改但是没有被添加到下一次提交,这是怎么回事?

      先清楚,git是一个按 快照流 进行控制的VCS,此时的缓冲区保存着一个快照也就是这个文件的最后一次 git add的快照,而在已修改但是未添加中的这个文件是你最后一次修改的文件.当你此时选择提交时,git会将你最后一个 git add的文件提交到本地仓库,而不是你现在修改的这个版本
      
  • 忽略某些文件

    你不想把某些文件添加到git的管理中,但是又不想他一直提醒你,可以这样设置:
    	在工作目录下建立一个 .gitignore文件,里面可以用通配符或者什么配置.
    	例如: *.[ao] 以o或者a结尾的都将被忽略  *~  以~结尾的将被忽略
    

    格式规范:

    image-20200915181221306

    • 比如说你忽略了 *.a ,但是有一个a.a这个文件不能忽略,那么就用 !a.a来忽略对这个文件的忽略

    image-20200915181436119

  • 比较差异

    git diff  比较工作区中的和最后一次暂存区中的内容差别
    
    如果想要比较暂存区中和最后一次提交的差别,可以使用
    git diff --staged 或者 --cached
    
  • 提交 git commit -m “提交的版本介绍”

    跳过暂存区直接提交
    git commit -a   提交所有已经被追踪且修改的文件
    
  • 删除文件

    git rm 文件名  将暂存区中的某文件打上删除标记 当提交之后,就会可以将仓库中的此文件删除
    
    删除已修改或者已经添加到暂存区中的文件,则需要使用 -f 进行删除
    
    删除某些我们不想被git管理但是已经被管理的文件,也就是想从git中删除此文件但是本地磁盘中仍然保留
    
    git rm --cached 文件名
    
    批量删除文件
    
    git rm \*~   \用于转义 删除所有以~结尾的文件
    
  • 从命名文件

    git mv 源文件名 目标文件名
    
    它相当于三个操作:
    mv 源文件名 目标文件名
    git rm 源文件名
    git add 目标文件名
    
  • 查看提交历史

    git log  按时间顺序,从上到下,时间最近的在最上面
    
    -p或--patch  显示每次提交的差异 
    -num 显示num条
    --stat 显示每次提交的简略统计
    --pretty
    	常用以下值:
    		oneline 将每个提交放在一行显示
    		short 
    		full 
    		fuller
    		format
    --graph
    

    image-20200915200326743

    image-20200915200225815

    • 限制git log 输出长度

      -<num> 限制输出提交数
      --since  git log --since=2.weeks
      --until  
      --author  限制提交作者
      --grep  从提交说明中限定关键词
      --all-match  显示所有--grep匹配的
      
      -S String 只显示出添加了或者删除了该字符串的提交
      
      -- 路径   限制提交路径,只能由这个路径中提交到
      

      image-20200915200656149

      image-20200915201316136

``markdown
- 限制输出提交数
–since git log --since=2.weeks
–until
–author 限制提交作者
–grep 从提交说明中限定关键词
–all-match 显示所有–grep匹配的

-S String 只显示出添加了或者删除了该字符串的提交

-- 路径   限制提交路径,只能由这个路径中提交到
```

[外链图片转存中...(img-v6i1FEge-1601340131066)]

[外链图片转存中...(img-zC137ZeU-1601340131067)]
  • 隐藏合并提交 --no-merges
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值