git --version //查看git版本信息
sudo yum remove git -y //卸载git
sudo yum install git -y//安装git
git init
创建本地仓库(最好先创建一个目录,在该目录下输入指令创建git仓库),创建完成后该目录下会存在一个.git文件
仓库配置
git config user.name "xxxxx" //设置用户名称
git config user.email "xxx@.xxx" //设置email地址
git config -l //查看当前仓库配置
git config --unset user.name //删除用户名
git config --unset user.email //删除email
git config --global color.ur true //打开git的默认颜色配置
git config --global color.ur false //关闭颜色配置
配置时可以加上--global选项,加上后设置的具有全局属性,该机器下的所有仓库都是用该设置,在删除全局属性时也要加上--global
//配置全局信息
git config --global user.name "xxx"
git config --global user.email "xxxx"
//删除全局配置
git config --global --unset user.name
git config --global --unset user.email
仓库信息
工作区:仓库目录下的除.git文件之外的文件都处在工作区
暂存区:将工作区的文件进行git add filename 后,处在工作区的filename就会提交到暂存区,对应.git文件下的index。
版本库:输入commit -m "xxxxxx" 后,会将暂存区的内容提交到版本库。此时在.git目录下还会有一个objects,该目录下的内容都是一个个的commit对象。
查看信息
git log //查看commit信息
git log --pretty=oneline //更加优雅的显示信息
git 追踪管理的是修改(增删查改)。
git status //查看仓库状态,上一次提交到现在是否发生修改
git diff filename //查看暂存区和工作区filename文件的差异
git diff HEAD -- filename //查看版本库和工作区filename文件的差异
git cat-file -p id //查看commit id索引的内容
//工作区的内容修改完后,如果想提交到版本库要进行add commit相关操作
git add filename //将filename添加到暂存区
git commit -m "xxx" //将暂存区的内容提交到版本库
版本回退
git reset --soft xxxxx //只回退版本库的内容,回退到指定commit的id索引处
git reset --mixed xxxx //回退版本库和暂存区的内容,回退到指定id,该选项为默认选项
git reset --hard xxxx //工作区、暂存区、版本库的内容都进行回退,慎用
//回退后git log也随之回退
git reflog //记录本地每一次的提交记录,可以根据里查看id,帮助回退
撤销操作
//只撤回工作区的内容
git checkout -- filename //撤销当前工作区的filename的内容,保持与版本库一致(当修改代码,又后悔了后想回到修改之前时使用)
//撤回工作区和暂存区的内容(即修改文件后,只进行了add)
git reset --mixed HEAD //HEAD:当前版本库的内容,这里先将暂存区回退到当前版本库的内容
//HEAD^:上一个版本库
//HEAD^^:上两个版本库的内容...
git checkout -- filename // 然后再撤回工作区的内容
//撤回工作区、暂存区、版本库的内容
git reset --hard xxx(HEAD版本或者其它版本) //使用--hard即可实现
删除版本库的文件
1、rm指令删除文件,然后git add 文件名 ,再git commit -m "xxxx"
2、git rm filename ,然后再git commit -m "xxxxx"
git分支管理
创建/切换/删除 分支
.git中HEAD指针指向master分支,master中存放最近提交一次的commit索引。
git branch //查看当前库的分支 *表示当前所在分支
git branch xxx //创建xxx分支
git checkout xxx //切换到xxx分支(即修改HEAD指向,xxx分支指向最新一次commit)
git merge xxx //将xxx分支合并
//利用分支操作比直接使用master分支更加安全
git branch -d xxx //删除xxx分支
分支冲突
git checkout -b xxx //新建xxx分支,并切换到该分支
场景:
当前master中存在一个文件readme,它的版本库内容为:aaa
此时我我们创建并切换到一个新分支dev,在该分支下修改工作区的readme的内容,新增一行bbb,并提交到版本库。
此时再切换回master分支,然后对master下的readme进行修改,新增一行ccc,然后再提交到版本库。此时进行合并,则会发生错误。
git log --graph --abbrev-commit //图形化形式显示分支信息
分支的切换实际上就是更改HEAD的指向,并将分支的内容修改成最近一次提交的commit id。所以很高效。