git 沙河游戏节点图, 自由沙盒模拟git, 各类交互git命令
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:
- git rebase master. 这样bugFix分支就相当于在master的基础上新增的代码了。
- git checkout master 回到master
- 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值非常长。
因此可以只使用前几个字符代表一个提交记录 , 即“相对引用”。
^ 代表
最新文章
- nginx+php 在windows下的简单配置安装
- Sql Server之数据类型详解
- iOS 收起键盘的几种方式
- DOM和IE中的 事件对象
- day4 函数
- Python学习笔记——部分常用/特殊用法
- python的中文编码问题
- Search everything 使用说明
- 创建dialog
- redisbook笔记——redis内存映射数据结构
- C++在数组元素个数未知情况下声明数组
- 阅读代码分析工具Understand 2.0试用
- HDU 2451 Simple Addition Expression(组合数学)
- 【BZOJ4916】神犇和蒟蒻(杜教筛)
- 基于N-Gram判断句子是否通顺
- flask shell命令
- 【资料收集】QT学习资料
- Eclipse自定义的透视图如何删除掉?
- Spring Boot中MyBatis的使用
- opencv学习笔记——FileStorage类的数据存取操作