Git学习的小小总结(二)

一、提交究竟是什么

1、git add --all

  "--all"选项 ==》 将所有修改纳入下一次的提交之中,最后进行统一的提交。

2、决定提交的散列值 ===》 文件内容+ 元数据(如作者、提交时间)

3、提交之间的差异比较 ==》 diff

  1两次提交比较:git diff xxx1 xx2

  2与上次最近提交进行比较 git diff xxx1^!  (就是 ^! )

  3只显示特定文件或目录之间的差异: git diff xx1 xx2  -  /book/

4、显示提交历史: log

   1部分输出: git log -n 3 //显示最后的3次提交
   2格式化输出: git log --format 或者  git log --oneline

   3统计修改信息:--stat --shortstat 。--stat 显示修改了哪些文件, --dirstat 显示那些含有修改文件的 目录(文件夹们)们

   4日志选项 --graph ==》 显示各提交之间的 “关系图” 
   注“以上选项可以放在一起使用。

5、小结:项目(工作区中)的版本库一般存在与 其 .git目录 中。提交散列值具有唯一性,也是一种信息汇总,可用于验证对象的存储完整性!!长度为40 个字符。

 

三、多次提交

1、工作区(目录树)==add、delete==>  暂存区(被选中的修改快照)==commit==> 版本库(被存档的目录树)

2、一次 “git commit” 提交操作,会将暂存区清空,工作区不受任何提交的影响,那些没有被 add命令添加到下一次的提交列表中的文件,仍然会存在与 工作区。

3、“流程”: 1查看当前所做的修改、改变 git status。2收集相关的修改到 下一次提交的列表文件中。git add xxx文件名字(当然比较懒的话,可以通过 git add --all 将所有发生修改的文件添加到下一次要提交的文件列表中) 3最后创建提交的申请 git commit -message '本次提交备注' (此时暂存区会被清空)

4、怎么去处理那些不该提交的提交?

 1为调试而作的实验性修改 2意外添加的修改文件 3尚未准备好的提交 4自动生成文件中所发生的修改

  解决方案:1使用 reset 命令 重置那些 实验性的修改 或者 被意外添加的内容。 2将不希望被提交的文件 列写到 》gitignore文件中。 3使用 stash命令将我们日后再提交的修改内容暂时保存起来(“类似 检查点 check point”)。

5、储藏 stash

  1通过 stash 命令将工作区和 暂存区中的修改 存在一个被称之为 储藏栈 的缓存区中!!

  2使用场景:修改到一半,发现有更重大的 bug 需要去修改,我们就先把当前的修改先保存到 stash 中;当修复完重大 bug后, 再回头通过 stash pop 将最开始的修改内容搬出来继续之前的工作。

  3“stash pop”(“弹栈”)命令将 栈中 所储藏的修改 恢复到 工作区中。列出 储藏栈 所包含的东西列表 git stash list

6小结:

  1代码片段选择: --interactive (逐 行 或 段)

  2重置暂存区??: git reset HEAD  将所有文件重置到 当前的 HEAD 版本??

 

五、版本库

1、Git的两个主要层面 = 顶层结构(就是我们最常用的那些命令,可调用的选项称为 瓷质命令) + 底层结构(称之为管道。 管道命令很少用)。

2、Git核心是一个对象数据库。该数据库可以用来存放 文本 或者 二进制文件。

3、Git 命令的一般形式 ==》 “git 命令名 选项 参数列表”

4、blob对象:按字节 存储在 对象数据库中。 tree对象: 目录的表示。

5、相同的数据仅存一次,相似的内容就进行压缩(“同一份 似压缩”)。

6、重命名机制??:文件的重命名和移动操作在提交前 无需进行 报备。

7、blame("背锅追溯专用?!"):确定某几行代码的最初来源,即使这些代码 已被移动 或者 复制  到了别处!!

 

六、分支

1、版本提交不能依次进行,以便形成一条直线型的提交历史 原因:!!!

  1由多名开发人员对同一个项目进行并行式开发。

  2为修复旧版本 bug 和 添加新特性 必须要 创建 和 发布 新的版本。

2、当前活跃分支

  1 git branch 列出当前所有的分支,其中前面带 * 号的就是当前活跃分支。

  2 git checkout a-branch  //将活跃分支 切换到 a-branch 分支上。

  3 git checkout -b a-branch   //创建并切换 到新分支 a-branch上 。

3、checkout 切换分支被拒绝的解决方案:
  1提交修改并切换: git commit --all ;   git checkout a-branch

  2放弃这部分修改并进行切换(--force选项): git checkout --force a-branch // 注:该命令会将这部分修改 覆盖掉!!!很危险!!

  3储藏区修改并切换: git stash ; git checkout a-branch ;  //后面应该在通过 git stash pop 回复所做的修改(“到缓存区”。工作区、缓存区、储藏区区别、联系??!)

4、删除分支

  1删除一个已被遗弃(不再使用的)分支: git branch -d a-branch

  2删除一个已打开的分支(“应该需要强力删除,所以使用 -D ,不再是 d”):   git branch -D a-branch
5、恢复某一个分支

  1(5.1)已知其提交的散列值: git branch a-branch 其散列值

  2不知道所要恢复分支的 散列值: 1通过 git reflog 找出我们想要的散列值,以便恢复该分支。2重复 5.1步骤

6、小结

  1分支:提交图(通过 git log --graph获得??)中出现分叉就叫 分支。该分支会有一个指针,指向该分支下的最后一次提交。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值