git学习总结(1)初识git

git学习总结(1)


写在前面的话


这是我学习git权威指南的一个总结,说是总结也不是学完之后的总结,而是每次学习之后的总结,所以知识难免有些分散,但是最后一定会有一个大总结的。


开始吧

开始我的git之旅了:

  • git 的有优点不必多说了,直接从创建一个版本库开始吧:
makedir demo ##创捷一个demo做测试文件夹
cd demo ##进入demo
git init ##git 的第一个命令初始化一个版本库,当然还可以直接执行 git init demo,这样git会替你创建一个demo 文件夹并初始化版本库。 初始化版本库后文件夹下回多一个隐藏的文件夹(.git)这就是git的版本库。
##那么开始一切工作之前先设置一下自己的身份信息吧,否则后面的提交也会很麻烦的!

git --global user.name "liumeng" ##设置我自己的名字,其中global代表全局,也就是用户,如果是--system 代表的是整个系统不推荐使用 另外还有 默认的是代表全局范围,按照惯例范围越小优先级越高,其实 --global 的配置是放在用户的家目录的, 而 --syetem 是放在系统目录 linux 中是在/etc 下  而 版本库范围的是存在.git 版本库目录下。

git config --global user.email "744713145@qq.com" ##设置邮箱信息
  • 版本库创建完了 那么就开始做一些操作吧

    • git操作截图

    • 根据提示可以看出 welcome 并没有加入版本库的控制 可以通过命令 git add 将welcome 加入版本库的控制

    • git 将版本库的操作划分为三个部分 : 工作区,暂存区,版本库 ,工作区就是用户电脑上的实际目录,暂存区是一个中间状态,我个人觉得这是区别于git 和其他版本库的一个方面,在工作中用svn等版本控制工具的时候一般是早上签出项目,晚上下班提交项目,但git加入暂存区的概念,是有意让用户把它当工具用而不是单纯的备份工具,git的工作流程一般是一个小改动add 一次 ,一个小阶段commit 一次,具体的应用还要在使用中体会。
    • git操作截图
    • welcome.txt已经加入版本库,git log命令是查看提交历史的,参数 –stat 查看改动信息 –graph 查看提交的关系 –oneline | –pretty=oneline每个提交显示一行 pretty=fuller 显示具体的提交信息
    • 其中git 有一个底层命令 rev-parse 用法非常多,暂时先列举几个见到那的用法
    • git操作截图
  • 清楚了加入暂存区提交这些概念后回顾一下工作区,暂存区 ,版本库这三者之间的关系吧
    • 首先git的文件是按树来划分的,工作区的树,暂存区的树,版本库的树,树其实就是一个索引目录,具体的文件对象在.git/objects/文件夹下存放,所谓的加入暂存区就是将工作区的文件加入.git/objects/然后将文件的位置更新到索引中也就是.git/index文件,所谓提交实际上就是用暂存区的树更新版本库当前分支最新提交的树,而版本库中的提交都包含parent父提交(第一次提交没有父提交,并且父提交可以是多个),tree代表提交所对应的文件树,commitid 提交的id 等信息,git就是根据这些信息组织出一条提交链。
    • git操作截图
    • 上面回顾了查看工作区,暂存区,和版本库中树的方法,接下来分析下版本库的提交链
    • git操作截图
    • git操作截图
    • 由上我们可以推出git 大概是如何管理提交信息的
  • 清楚了工作区,暂存区,版本库的概念 接下来就检出和重置操作
    • 一般来说检出操作checkout默认针对是从版本库检出到工作区,而重置操作reset默认是从版本库检出到工作区,所以一般检出用作覆盖工作区,重置用来覆盖暂存区,当然这真的是一般。
    • chekcout的用法有这些:git checkout 显示出工作区和版本库的差异,git checkout .用工作区的全部信息覆盖工作区(这是相当危险的)git checkout – 用暂存区的指定文件覆盖工作区,git checkout HEAD 显示版本库和工作区以及暂存区的差异, git checkout HEAD [. –]用版本库的全部文件覆盖暂存区和工作区或者用版本库的某个文件覆盖暂存区和工作区
    • reset的用法有这些,git reset 用版本库的文件覆盖暂存区,git reset HEAD 同上, git reset HEAD^ 将HEAD指向版本库的父提交并覆盖暂存区,相当于 git reset –mixed HEAD^, git reset –soft HEAD^ 仅将HEAD 指向HEAD的父提交,git reset –hard HEAD^ 这个指令最危险,用HEAD的父提交的信息覆盖所有(版本库,暂存区,工作区)慎用。
    • 当reset后git log 发现最新的提交已经看不到了,这该怎么办,然而挽救的办法肯定是有的,但要记住,这也是有期限的,使用git reflog 可以查看提交链的变更信息,然后就可以根据id 或者 head@{1}用reset 重新找回失去的提交。是很强大。

·不是不觉到了中午了下次再总结吧,今后一定要养成总结自己所学的习惯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值