【查看git版本(2.19.2.windows.1)】
-
git –version
-
git –exec-path(获取git的执行目录)
【版本库配置项】
-
git config user.name “licong”
-
git config user.email ”
licong@ossxp.com
”
-
git config color.ui true
-
git config –unset user.name(取消配置项)
-
git config –unset user.email(取消配置项)
【用户级别配置】
-
git config –global user.name “licong”
-
git config –global user.email ”
licong@ossxp.com
”
-
git config –global color.ui true
-
git config –unset –global user.name
-
git config –unset –global user.email
【系统级别配置】
-
git config –system user.name “licong”
-
git config –system user.email ”
licong@ossxp.com
”
-
git config –system color.ui true
-
git config –unset –system user.name
-
git config –unset –system user.email
【config备注】
-
描述:git config[–global]|[–system],不加global和system代表当前版本库配置,global代表当前用户配置,system代表系统级配置。git config 修改的是/.git/config文件
【配置别名】
-
git config –global alias.st status
-
git config –global alias.ci commit
-
git config –global alias.co checkout
【初始化版本库】
-
git init
【Git添加暂存区】
-
git add -u(将本地文件变更(修改、删除)全部记录到暂存区中)
-
git add -A (将本地所有改动及新增文件添加到暂存区中)
-
git add -i (进入交互式页面)
-
git add .
-
git add -f welcome.txt(添加忽略文件到暂存区)
【Git rev-parse】
-
git rev-parse –git-dir(显示版本库.git目录所在位置)
-
git rev-parse –show-toplevel(显示工作区根目录)
-
git rev-parse master(查看引用对应的提交id)
-
git rev-parse refs/heads/master(查看引用对应的提交id)
-
git rev-parse master HEAD
-
git rev-parse –symbolic –branches (显示分支)
【Git提交】
-
git commit –allow-empty -m “who does commit”(允许空提交)
-
git commit –amend –allow-empty –reset-author (最新的提交,修改作者、提交者)
【Git重置命令】
-
git reset [-q] [ ] [–] …
-
git reset [–soft|–mixed|–hard|–merge|–keep] [-q] [commit]
-
上面列出了两种用法,[commit]是可选项,可以使用引用或者提交ID,如果省略 则相当于使用了HEAD的指向作为提交ID。
-
上面列出的两种用法区别在于,第一种用法在命令中包含路径 。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在 前用两个连续的短线作为分隔。
-
第一种用法(包含路径 的用法)不会重置引用,更不会改变工作区,而是用指定提交状态( )下的文件替换掉暂存区中的文件。例如命令:git reset HEAD 相当于取消之前执行的 git add 命令时改变的暂存区。
-
第二种用法则会重置引用。根据不同的选项,可以对暂存区或工作区进行重置。
-
git reset –hard 1.替换引用指向,2.替换暂存区,3.替换工作区
-
git reset –soft 只更改引用的指向,不更改暂存区和工作区
-
git reset –mixed 1.更改引用指向,2.重置暂存区,工作区不改变
【用reflog挽救错误的重置】
-
git config core.logallrefupdates(确认版本库,是否开启分支日志功能)
-
git reflog show master | head -5
-
git reset –hard master@{2} (master@{2}:master分支第2次改变时的SHA1哈希值)
【Git检出】
-
分离头指针:指的是HEAD头指针,指向了一个具体提交ID,而不是一个引用(分支)
-
git checkout [-q] [commit] — ….
-
git checkout [branch]
-
git checkout [-m] [[-b|–orphan] <new_branch>] [<start_point>]
-
上面列出的第一种用法和第二种用法的区别在于,第一种用法命令中包含路径 。为了避免路径和引用(或者提交ID)同名而发生冲突,可以在 前面用两个连续的短线作为分隔。
-
第一种用法的 是可选项,如果省略则从暂存区(index)进行检出。重置的默认值是HEAD,而检出的默认值是暂存区。因此重置一般用于重置暂存区,而检出命令主要覆盖工作区(如果 不省略,也会替换暂存区中的文件)
-
第一种用法不会改变HEAD头指针,主要是用于指定版本的文件覆盖工作区中对应的文件。如果省略commit,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中对应的文件。
-
第二种用法会改变HEAD头指针。之所以后面的参数写作 ,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态。在“分离头指针”状态下的提交不能被引用关联到,从而可能丢失。所以用法二最主要的作用是切换分支,如果省略 ,则相当于对工作区进行状态检查
【Git Stash(暂存工作进度)】
-
git stash save “message”
保存工作进度,会分别对暂存区和工作区的状态进行保存
-
git stash list(查看保存的进度)
-
git stash pop –[index] [ ]
如果不使用任何参数,会恢复最新保存的工作进度,并从工作进度列表中清除
如果提供 参数(来自于git stash list 显示的列表),则从 中恢复。
选项除了恢复工作区文件外,还尝试恢复暂存区。
-
git stash apply –[index] [ ]
除了不删除工作进度之外,其余和git stash pop命令一样
-
git stash drop [ ]
删除一个工作进度,默认删除最新的
-
git stash clear
删除所有工作进度
-
git stash branch
基于进度创建分支
【Git 里程碑】
-
git tag -m “create new tag” v1.0
里程碑也是一个引用,通过记录提交ID,来为当前版本库的状态留影
-
git describe命令将最新提交显示为一个易记名称。显示的时候会选取离该提交最近的里程碑作为“基础版本号”,后面附加标识距离“基础版本号”的数字,以及该提交SHA1哈希值的缩写。
【Git清除命令】
-
git clean -nd(测试运行,查看哪些文件或目录被删除)
-
git clean -fd(清除当前工作区中,没有加入版本库的文件和目录)
-
git rm 1.txt 2.txt 3.txt(git删除文件)
【恢复删除的文件】
-
git cat-file -p HEAD~1:welcome.txt > welcome.txt
-
git show HEAD~1:welcome.txt > welcome.txt
-
git checkout HEAD~1 — welcome.txt
【移动文件】
-
git mv welcome.txt README(文件重命名)
【Git日志命令】
-
git log –pretty=fuller(打印全部日志)
-
git log –stat(统计提交文件变更)
-
git log –pretty=oneline(日志信息展示一行)
-
git log -l –pretty=raw –graph –stat(日志详细输出)
-
git log –graph –oneline(–oneline参数在Git1.6.3及以后版本才有)
-
git log –oneline –decorate -4(该命令可以显示,提交对应的里程碑,decorate 可以在提交ID旁边显示该提交关联的引用)
【Git查看工作空间状态】
-
git status -s(精简格式)
-
git status –ignored -s(查看忽略文件)
【Git比较命令】
-
git diff(工作区与暂存区比较)
-
git diff HEAD(工作区与当前分支比较)
-
git diff –cached(暂存区与版本库中文件比较)
【查看文件时间戳】
-
ls –full-time .git/index
【删除暂存区文件】
-
git rm –cached
【查看暂存区、版本库目录树】
-
git ls-tree -l HEAD (查看当前分支目录树;-l显示文件大小)
-
git ls-tree -l(查看暂存区目录树;)
【Git查看对象类型】
-
git cat-file -t cd6ff3(根据id查询对象的类型)
【Git查询对象内容】
-
git cat-file -p cd6ff3
【Git提供了很多方法可以方便的访问Git库中的对象】
-
采用部分SHA1哈希值, 不必把40位全部写全,只取开头部分(4位以上 )
-
使用HEAD代表版本库中最近一次提交
-
符号 ^ 可以用于指代父提交【HEAD^代表版本库中上一次提交;HEAD^^代表版本库中上两次提交】
-
对于一个提交有多个父提交,可以在符号 ^ 后面数字表示是第几个父提交。HEAD^2
-
符号~ ,也可以用于指代祖先提交。a107354~5,及相当于a107354^^^^^
-
提交所对应的树对象,可以用如下语法访问a107354^{tree}
-
某一次提交对应的文件对象,可以用如下语法访问a107354^:/path/to/file
-
暂存区中的文件对象,可以用如下语法访问:/path/to/file