github review <1>
来源:互联网 发布:linux安装vmware 编辑:程序博客网 时间:2024/06/08 10:56
github review <1>
github review 系列主要是因为要向github提交leetcode代码,但是之前看的《git权威指南》因为好久没用所以给搁置了,捡起来review一下O(∩_∩)O哈!
common comand:
- git add
- git ci -m ‘description’
- git st -s -s是short的意思
- git log –oneline –graph
- git diff 工作区和暂存区(stage)的差异
.git/index 实际上就是一个包含文件索引的目录树,像是一个虚拟的工作去。文件的内容保存在.git/objects对象库目录中。
工作区、版本库、暂存区原理图
- 上图左侧为工作区,右侧为版本库。在版本库中标记为index的为暂存区,标记为master的是master分支所代表的目录树。
- 对工作区的修改执行git add时,暂存区的目录树会更新,同时文件内容会被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
- git commit命令时,暂存区的目录树会写入到版本库中。master分支会相应的更新。即master最新指向的目录树就是提交时原暂存区的目录树。
- git reset HEAD,暂存区的目录树会被重写,会被master分支所指向的目录树所替换,但是工作区不受影响。
- git rm –cache < file> 的时候,会从暂存区删除文件,工作区不受影响。
- git checkout . 或者 git checkout – < file> 的时候,会用暂存区全部的文件或者指定的文件替换工作区的文件。这个操作很危险,会清除工作区未添加到暂存区的改动。
- git checkout HEAD . 或者 git checkout HEAD < file>命令时,会用HEAD指向的master分支中的全部或者部分文件替换暂存区和工作区中的文件。
git diff 命令
- 比较工作区和暂存区 git diff
- 比较暂存区和HEAD git diff –cache
- 工作区和HEAD比较 git diff HEAD
对象库
git cat-file
-t参数 后面跟对象id 显示类型
-p参数 显示对象详细信息
git rev-parse master
显示对象ID
分支的实现:
master为例,master分支在版本库的引用目录中 (.git/refs)体现为一个引用文件.git/refs/heads/master,起内容就是分支中最新提交的提交ID
git reset重置
用法一:git reset [-q] [< commit>] [–] < paths>… 为了避免路径和引用(或提交ID)同名而发生冲突,可以在< paths>前用–作为分隔
用法二:git reset [–soft | –mixed | –hard | –merge | –keep] [-q] [< commit>]
git reset省略commit就是默认HEAD。
- 第一种用法不会重置引用,更不会更改工作区,只是用指定commit下的文件替换掉暂存区中的文件。用法举例:
git reset HEAD < paths>取消之前执行的git add < paths>命令时改变的暂存区。 - 第二种用法则会重置引用(master引用)。
- 参数–hard
- 改变master(或者其他分支)引用
- 用commit指向的目录树替换暂存区
- 替换工作区,使得和暂存区一样
- 参数–soft
只改变当前分支的引用 - 参数–mixed(默认参数)
- 改变当前分支的引用
- 改变暂存区,不改变工作区
- 参数–hard
实例:
- git reset
用HEAD指向目录树重置暂存区。 - git reset HEAD
同上 - git reset – filename
文件filename的改动撤出暂存区,其它文件不变。 - git reset HEAD filename
同上 - git reset –soft HEAD^
撤销最近的提交以便重新提交。
重置反悔
- git reset –hard HEAD^
重置到HEAD的父提交 - git reflog show master | head -5
输出中,这里< refname>@{< n>}含义是引用< rfname>之前第< n>次改变时的SHA1哈希值。
用来挽救错误的重置
接着命令是 - git reset –hard master@{2}
git checkout检出
git merge commitID 会将commit合并到当前分支中。
用法一:git checkout [-q] [\] [–] < paths>… 为避免路径和引用(或提交ID)同名而发生冲突,可以在< paths>前用–作为分隔
此用法不会改变HEAD头指针,主要用于指定版本的文件覆盖工作区中对应的文件。若省略< commit>,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中对应的文件。
用法二:git checkout [< branch>]
此用法会改变HEAD头指针,之所以后面的参数写作< branch>,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态,此状态下提交不能被引用关联到,从而可能丢失。所以此用法最主要的作用就是切换到分支,若省略则相当于对工作区进行状态检查。
用法三:git checkout [-m] [[-b | orphan] < new_branch>] [< start_point>]
此用法主要是创建和切换到新的分支,新的分支从< start_point>指定的提交开始创建。新分支与master分支没什么实质的不同,都是在refs/heads命名空间下的引用。
用法举例
- git checkout branch
更新HEAD指向branch分支,并用branch指向的 - git checkout
汇总显示工作区、暂存区和HEAD的差异。 - git checkout HEAD
同上 - git checkout – filename
用暂存区的filename来覆盖工作区的filename。 - git checkout branch –filename
HEAD不变,用branch指向的提交中的filename替换暂存区和工作区中的文件。 - git checkout – .或者git checkout .
会取消所有本地的修改(相对暂存区)相当于用暂存区覆盖工作区。
- github review <1>
- 如何用github/gitlab做代码review
- Collection Review 1
- JDBC Review 1
- RMI Review 1
- code review手记1
- review vi 【1】
- review autotools 1st
- C++ review(1) - Basics
- Machine Learning Review 1
- Complex analysis review 1
- Review
- Review
- review
- review
- review
- Review
- review
- 树莓派点亮一个led灯
- Codeforces 501 B - Misha and Changing Handles
- KMP模板
- Gradle用户指南之初学者教程(二)
- apache多路处理模块的知识总结
- github review <1>
- arch-linux+xfce4+lightdm+uefi个人安装记录
- Google搜索指定地区,不跳转
- 运算符
- Binary Tree Right Side View
- 如何在富途证券开户,富途证券如何开户,如何开通港股账户,如何炒港股
- C语言函数string.h 之 内存copy函数memcpy
- 解答:为什么eclipse新建Android项目时无法打开build sdk下拉菜单,无法完成新建?
- HDU 3642 Get The Treasury[离散化 + 扫描线 + 线段树]