(1)显示git版本号
git --version
(2)初始化版本库
在/home/zdq0394/workspace/下面创建版本库demo
(2.1)mkdir demo;cd demo;git init
(2.2)git init demo
(3)git config命令
(3.1)创建配置
git config user.name "zdq0394"
针对当前版本库
/home/zdq0394/workspace/demo/.git/config
git config --global
user.name "zdq0394"
针对当前用户的版本库
/home/zdq0394/.gitconfig
git config --system user.name "zdq0394"
针对系统所有用户的版本库
/etc/gitconfig
(3.2)显示配置
git config user.name
git config --global
user.name
git config --system user.name
(3.3)删除配置
git config --unset user.name
git config --global
--unset user.name
git config --system --unset user.name
(4)git status
git status
git status -s
输出简洁的格式
(5)git diff
git diff
工作区和暂存区的比较
git diff --cahed
暂存区和HEAD的比较
git diff HEAD
工作区和HEAD的标记
git diff B A
比较里程碑B和里程碑A的差异
git diff A
比较工作区和里程碑A
git diff --cached A
比较暂存区和里程碑A
git diff
比较工作区和暂存区
git diff --cached
比较暂存区和HEAD
git diff HEAD
比较工作区和HEAD
git diff <commit1> <commit2> -- <paths>
paths路径下文件不同版本的差异比较
git
(6)日志
git log
git log --pretty=oneline
git log -l --pretty=raw
(7)工作区<=>暂存区<=>版本库
git add test.txt
将test.txt加入到暂存区
git commit
将暂存区的文件同步到到版本库
git reset HEAD
将版本库同步到暂存区,工作区不受影响
git rm --cached <file>
将暂存区的文件(更新)删除,工作区不变
git checkout -- <file>
将暂存区同步到工作区
git checkout HEAD <file>
将版本库同步到暂存区并同步到工作区
(8)补丁文件交互
Git版本库之间的交互方式(1)通过push和pull(2)通过补丁文件patch
(8.1)创建补丁
git format-patch HEAD~3..HEAD 将本地最近的3个commits创建为patch。该命令将创建3个patch,按照提交顺序编号。
(8.2)应用patch(通过管道命令方式)
cat *.patch | git am 将当前文件夹下的所有patch应用到当前的版本库
(8.1)创建补丁
git format-patch HEAD~3..HEAD 将本地最近的3个commits创建为patch。该命令将创建3个patch,按照提交顺序编号。
(8.2)应用patch(通过管道命令方式)
cat *.patch | git am 将当前文件夹下的所有patch应用到当前的版本库
(9)查看对象信息
git cat-file -t
类型
git cat-file -s
大小
git cat-file -p
输出内容
(10)查看引用对应的commit id
git rev-parse master
git rev-parse refs/heads/master
git rev-parse HEAD
(11)祖先提交的表示方式
HEAD
当前提交
HEAD^
当前提交的父提交
HEAD~n
当期提交之前的第n个提交
(12)重置reset
git reset HEAD
将版本库同步到暂存区,工作区不受影响
git reset --hard HEAD
将版本库同步到暂存区和工作区
git reset --hard HEAD^
将版本库/暂存区/工作区都同步到前一个版本
git reset --hard HEAD~3
将版本库/暂存区/工作区都同步到前三
个版本
git reset --soft HEAD^仅仅重置版本库,暂存区和工作区不变
git reset --mixed HEAD^重置版本库和暂存区,工作区不变
git reset HEAD^ 同上
git reset --hard HEAD^重置版本库、暂存区和工作区
(13)检出checkout
重置reset的实质是修改引用(比如refs/heads/master)的游标指向。
而检出的实质是修改头指针(HEAD)的指向。头指针,是当前工作区的“基础版本”。
cat .git/HEAD
ref: refs/heads/master
git checkout branch检出branch分支,更新HEAD以指向branch分支
git checkout --filename用暂存区filename覆盖工作区。相当于取消自git add filename
(14)Git基本操作
git add test.txt
将test.txt加入暂存区
git rm -cached test.txt
从暂存区删除test.txt
git rm -f test.txt
从暂存区和工作区同时删除test.txt
git add -u
将工作区(被版本库追踪的文件)的文件的变更(修改、删除)全部记录到暂存区
git add -A
将工作区中的所有改动及新增文件添加到暂存区
git mv test.txt test1.txt
重命名操作
git archive -o latest.zip HEAD
基于最新提交建立归档文件:latest.zip
git archive -o partial.tar HEAD src doc
只将目录src和doc建立到归档文件partial.tar中
git archive --format-tar --prefix=1.0/ v1.0 | gzip>foo-1.0.tar.gz
(15)git 历史穿梭
git rev-parse --symbolic --branches
显示分支
git rev-parse --symbolic --tags
显示里程碑
git rev-parse --symbolic --glob=refs/*
显示定义的所有引用
git rev-parse HEAD
显示HEAD对应的SHA1的哈希值
git rev-parse HEAD dev refs/heads/dev
显示各引用对应的SHA1的哈希值
git rev-parse refs/tags/A
显示里程碑A对应的SHA1的哈希值
(16)git clone
git clone <repository> <directory>
对等工作区
git clone --bare <repository> <directory.git>
git clone --mirror
<repository> <directory.git>
git clone -b master <directory.git> clone远程的master分支(默认分支)
git checkout -b dev origin/dev 根据远程origin/dev创建本地dev分支
git init --bare demo.git