git学习练习总资源链接: https://try.github.io/ (练习已通,有document)

本沙盒游戏教学:https://learngitbranching.js.org/?demo

自由沙盒模拟网页 : http://git-school.github.io/visualizing-git/

好的译文: https://github.com/geeeeeeeeek/git-recipes/wiki


什么是git?

一个分布式的源代码库。管理Linux内核源代码。

git已快照形式保存和处理内容,每一个提交都是一次快照。git可以在快照之间回滚。


一个节点代表一个commit.

*代表当前分支的最后一次提交:HEAD

master是主干。

其他名字是分支。

git merge :用于合并分支的代码。

git rebase : 线性合并分支:

git rebase [-i] [目标] [移动记录] 

git rebaes [目标]  #省略[要移动的记录],则为当前分支的所有commit。

假如当前分支是bugFix:

  1. git rebase master. 这样bugFix分支就相当于在master的基础上新增的代码了。
  2. git checkout master 回到master
  3. git rebase bugFix,  master和bugFix的代码都一样了。

HEAD:

是一个对当前检出记录的符号引用 -- 也就是指向你正在其基础上进行工作的提交记录

它总是指向当前分支上最后一次的提交记录。 大多数提交树的git命令都是从改变HEAD的指向开始的。

⚠️,后面章节讲的远程分支 origin/master是例外

HEAD 通常是指向分支名的(如bugFix)。在你提交commit时,改变了分支的状态,这一变化通过HEAD变得可见。

分离的HEAD:

让它指向某个具体的提交记录(hash值)而不是分支名。

git checkout <hash>

git checkout命令本质就是移动HEAD,到目标commit点, 然后更新工作目录以匹配这个commit点。

因为这个操作会overwrite local changes,导致改变的文件丢失,所以Git强迫你先commit或stash工作目录中的改变的文件。

⮀ git checkout master
error: Your local changes to the following files would be overwritten by checkout:
app/assets/javascripts/search.js
Please commit your changes or stash them before you switch branches.

关于git stash  (具体工作原理和全部的知识见链接文章)

会把尚未加入stage的文件和statge中的文件保存(就是未commited的文件),以便在之后使用。

之后可以revert them from your working copy.

现在可以进入任何其他操作,如创建新commits, 转变分支,执行其他git操作了。

⚠️stash是本地的。当你push的时候,stash不会被传输。

Re-applying your stashed changes:

$ git stash pop

另外使用git stash apply, 可以reapply the changes的同时在stash中保留它们。这在为多个分支应用时有用。

⚠️:默认Git不会stash 未tracked文件和ignored files。


相对引用

通过指定提交记录hash值的方式在Git中移动不方便操作。

必须用到git log, 而且hash值非常长。

因此可以只使用前几个字符代表一个提交记录 , 即“相对引用”。

^    代表

最新文章

  1. nginx+php 在windows下的简单配置安装
  2. Sql Server之数据类型详解
  3. iOS 收起键盘的几种方式
  4. DOM和IE中的 事件对象
  5. day4 函数
  6. Python学习笔记——部分常用/特殊用法
  7. python的中文编码问题
  8. Search everything 使用说明
  9. 创建dialog
  10. redisbook笔记——redis内存映射数据结构
  11. C++在数组元素个数未知情况下声明数组
  12. 阅读代码分析工具Understand 2.0试用
  13. HDU 2451 Simple Addition Expression(组合数学)
  14. 【BZOJ4916】神犇和蒟蒻(杜教筛)
  15. 基于N-Gram判断句子是否通顺
  16. flask shell命令
  17. 【资料收集】QT学习资料
  18. Eclipse自定义的透视图如何删除掉?
  19. Spring Boot中MyBatis的使用
  20. opencv学习笔记——FileStorage类的数据存取操作

热门文章

  1. 170808、生成为CVS文件
  2. Guava增强for循环
  3. poj3630 Phone List【Trie树】
  4. SpringCloud 进阶之Zuul(路由网关)
  5. Django之urls.py详解
  6. [ jQuery ] scrollTop与offset()!
  7. mysql 数据操作 单表查询 group by 聚合函数
  8. Select触发事件
  9. 使用jQuery包装节点
  10. Java基础教程:IO流与文件基础