https://git-scm.com/book/zh/v2
git历史
集中式版本控制管理:cvs、svn
分布式版本控制管理:git
基本命令
git config --list --global
:查看git配置
git init projectname
:新建仓库
工作目录-暂存区-版本历史
git add filename
:把文件从工作目录放到暂存区 (可被git管理)
git commit -m 'comment'
:提交到版本历史
git add -u
:对于已经被git跟踪的文件,全部add
可以结合使用:git commit -am 'comment'
对于已经被git跟踪的文件,全部commit
git status
:查看状态
git reset --hard
:暂存区的所有变更被清空
重命名文件
- 普通方法
- 在工作目录中重命名:
mv oldfile newfile
git add newfile
git rm oldfile
- 在工作目录中重命名:
git mv oldfile newfile
:不需要add!可以直接提交
日志
git log
:查看当前分支日志
git log --oneline
:简洁
git log -n4
:最近4次
结合使用:git log -n2 --oneline
git log --all
:所有分支
git log --graph
图形化
分支
git branch
:查看本地分支
结果:* master
git branch -v
:查看本地分支信息
结果:* master 74c0f18f merge bug
git branch -r
:查看远程分支
git branch -av
:查看所有分支信息
git checkout -b branchname 415c58
:创建分支
415c58是SHAI ID
git checkout master
:切换分支
切换分支时,HEAD内容会发生变化,内容指向当前分支
git cat-file -t 74c0f18
:查看类型,结果为commit
-p 查看内容
图形化界面
gitk
:打开图形化界面
Patch:某一次的变更集,文件变更内容
Tree:文件目录结构,完整文件内容
.git文件夹
config:配置
/refs:/heads和/tags等
/objects/pack: 2个字符的松散文件夹打包
/objects/1c: 1c是两个字符的文件夹,内容是名为32c7dc4db2e4494cc80a9d417523daf7512c3e的文件。
git cat-file -t 1c32c7dc4db2e4494cc80a9d417523daf7512c3e
结果是tree。
git cat-file -p 1c32c7dc4db2e4494cc80a9d417523daf7512c3e
查看内容:
040000 tree aa7ea3fa83ad4c362b76a3fd4cf10c5d021b3a2e config
040000 tree a889744e08d65dddfb36db73209caa9a2c29e727 controller
040000 tree 224fda9a113e92e2df3aed4a8b0853b0dbfa28dd management
040000 tree 4d2202faec0f467d70801ccb39e4735647c31785 service
040000 tree 7746f7cc99e6bf1523019361f9837d7ad56c3bbe util
git cat-file -p aa7ea3fa83ad4c362b76a3fd4cf10c5d021b3a2e
查看内容:
100644 blob 42da2509ccf8cea1661f5370a20552c0c1f4a895 ManagementSecurityConfig.java
commit、tree和blob
一个commit对应一个tree
tree:保存快照,包含tree和blob
blob:文件内容相同就是同一份blob,可以大大节约存储空间
理解为文件夹和文件
补充:win中 ls ~ dir、 cat ~ type