Git基础(本地)
安装
地址:https://git-scm.com/book/en/v2
设置最小配置:
$ git config --global user.name author #将用户名设为author
$ git config --global user.email author@corpmail.com #将用户邮箱设为author@corpmail.com
config作用域:
$ git config --local //local只对某个仓库有效,缺省为local
$ git config --global //glodal对当前用户所有仓库有效
$ git config --system //glodal对系统所有登录的用户有效
显示config的配置,加 --list
$ git config --list --local
$ git config --list --global
$ git config --list --system
建Git仓库
已有的项目代码纳入Git管理
$ cd 项目代码所在文件夹
$ git init
新建的项目直接使用Git管理
$ cd 某个文件夹
$ git init your_project
$ cd your_project
工作区和暂存区
$ git status //查看状态
$ git add 文件名 //提交到暂存区
$ git add -u //批量提交更新到暂存区
$ git commit -m '日志' //提交到本地库
$ git reset --hard //版本回退,慎用!!!
$ git mv readme readme.md //变更文件名
常用命令
查看版本历史
$ git log
$ git log --oneline //显示单行
$ git log --n4 //最近几条
$ git log --all //所有分支
$ git log --all --graph //图形化
$ git log --all --graph -n4 --oneline
显示图形化界面
$ gitk
查看git仓库对象
$ git cat-file -t hash值 //查看类型
$ git cat-file -p hash值 //查看内容
分支
$ git branch -av //查看分支
$ git branch -d 分支名 //删除本地分支
$ git branch -D 分支名 //删除本地分支
注:
-
-d是–delete的缩写,在使用–delete删除分支时,该分支必须完全和它的上游分支merge完成(了解上游分支,可以点击查看链接),如果没有上游分支,必须要和HEAD完全merge
-
-D是–delete --force的缩写,这样写可以在不检查merge状态的情况下删除分支
-
–force简写-f,作用是将当前branch重置到初始点(startpoint),如果不使用–force的话,git分支无法修改一个已经存在的分支.
整理commit
修改最新一次commit message
$ git commit --amend
修改老旧的commit message
$ git rebase -i commit上级ID //变基 原理:HEAD指针分离
把连续多个commit合并一个commit
$ git rebase -i commitID
# 进入交互界面 。修改内容( s )
#退出: 添加message
把间隔多个commit合并一个commit
$ git rebase -i commitID
# 进入交互界面 。修改内容( s )
#退出: 添加message
.git目录
- HEAD 文件 git仓库的当前工作分支
- config 文件 git配置信息
- refs (类型commit)
heads 分支
tags 里程碑 - objects (类型tree)
xx (类型blob)
pack 打包
commit/tree/blob关系
分离头指针
变更没有基于branch,在切换分支时,基于HEAD的commit,可能会被git基于垃圾清除
,如果你认为改commit是重要的,切记将改commit与某个分支绑定。
HEAD与brand区别
比较两次版本间的差异
$ git diff xxx yyy
$ git diff HEAD HEAD^1 //比较HEAD与其父的差异 (HEAD^1^1 HEAD父亲的父亲 等同于 HEAD~2)
HEAD和暂存区所含文件的差异
$ git diff --cached
工作区和暂存区所含文件的差异
$ git diff
$ git diff -- 文件名 //某个文件的差异
不同提交的指定文件的差异
$ git diff temp master -- index.html
$ git diff xxx yyy -- index.html
暂存区恢复成和HEAD一样
$ git reset HEAD //清空暂存区
取消暂存区部分文件更改
$ git reset HEAD -- 暂存区文件名称
工作区恢复成和暂存区一样
$ git checkout -- 暂存区文件名称
清除最近几次提交
$ git reset --hard 回滚到commit指针 //慎用!!!
删除文件
$ git rm 删除文件名
等价于下面两步
rm 删除文件名
$ git rm 删除文件名
开发中加塞紧急任务
$ git stash //储藏
$ git stash list //列出储藏列表
#开发
#开发完成
$ git stash apply //弹出但不清空储藏
$ git stash pop //弹出但清空储藏
$ git stash drop //清空储藏
指定不需要Git管理的文件
#创建 .gitignore文件
doc
doc/
*.doc/