Git 是什么
- 分布式的版本控制系统
- 客户端不并不是简单的讲文件的最新快照检出,而是对代码库进行完整的镜像.
快照: 关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品
一些概念
- 工作目录下的每一个文件都处于以下两种状态之一:已跟踪(tracked)或者未跟踪(untracked)
2.已跟踪文件的三种状态:
- committed : 已提交
- modified : 已修改
- staged : 已暂存
3.提交只会将缓存区的内容提交到仓库
常用的命令
git config
git config --global uesr.name "ccc"
git config --global uesr.email 123@163.com
global 选项的作用就是设置全局属性,可以不带,这样每个项目都可以指定一个用户名
git config --list
检查个人设置
git status
git status # 查看已跟踪文件的状态
git status -s # 简洁状态信息
M M 前者代表修改已缓存,后者代表有修改但没有缓存
git diff
git diff # 查看工作区与缓存区的差异
git diff --staged/--cached # 查看本次提交与上次提交的差异
git commit
git commmit -m"" # 提交
git commit -a -m""绕过 git add 直接将工作区的修改提交
git rm
git rm # 移除文件 之后要 git commit
如果一个 文件在缓存区,但是我们不想 让git 跟踪 可以用
git rm --cached 文件名
git mv
git mv #移动 文件或者重命名
git mv README.md README
git log
git log 查看提交历史
git log -p # 显示每次提交引入的差异
git log -p -2 # -2显示最近两次的提交
git log --stat # 查看每次提交的简要统计信息
git log --pretty=oneline # --pretty 更改日志输出的morning形式 显示一行
常用的prety: oneline ,short, full,fuller,format
git log --pretty=format:"%h - %an,%ar - %s" # 输出自己的格式
git log --pretty=format:"" --graph # 用简单的图显示git分支与合并的历史
git log --since=2.weeks # 输出最近两个星期
git log --author
git commit --amend
提交之后如果忘记了之前修改的文件 可执行下面的命令,它只会产生一个提交历史
git commit --amend # 撤销操作
git reset HEAD <filename>
撤销已经缓存的文件
git checkout -- <file>
放弃修改
分支
git branch <branch name>
创建分支
git checkout <branch name>
切换分支
git merge <要合并的分支>
合并分支
git branch -d <branch name>
删除分支
变基
git checkout <分支名>
git rebase <保留的分支名>
git checkout <保留的分支名>
git merge <分支名>
git branch -d <分支名>