安装和使用
sudo apt-get install git
创建版本库
git init
创建版本
git add 文件
git commit -m "版本说明"
查看暂存区修改
git status
查看版本
git log
查看操作记录
git reflog
回滚版本
创建出来的版本会有一个HEAD 指针指向这个版本
HEAD^ 或 HEAD~1 表示上一个版本
滚回上一个版本
git reset --hard HEAD^
滚回某个版本
git reset --hard 版本号
回滚某个文件
使某个文件的内容回滚到没有被暂存的状态
而不是版本保存的状态
git checkout -- 文件名
回滚已经暂存的文件
如果某个文件已经暂存
使用 git reset HEAD 文件名 放弃暂存
然后再使用 git checkout -- 文件名 进行回滚
暂存删除的文件
git rm 或者 git add 被删除文件名
工作区和暂存区
工作区
在创建版本时会创建一个.git的文件夹
.git 文件夹所在的文件目录 就叫做工作区
版本库
工作区中的 .git文件夹不是工作区 而是git版本库
在版本库中分为两部分
- 暂存区
使用git add 把修改的内容添加进暂存区 - HEAD
使用git commit 把暂存区的内容提交到当前分支 保存为一个版本
对比文件的不同
对比工作区与HEAD版本的不同
git diff HEAD -- 文件名
出现-的行表示HEAD有的
出现+的行表示文件有的
对比两个版本的不同
git diff HEAD^ HEAD -- 文件名
出现-的表示上一个HEAD有的
出现+的表示这个HEAD有的
分支管理
实际上HEAD 先指向了分支名再由分支名指向了版本
分支实际上只是一个指针代表一个平行版本
查看分支
git branch
创建分支
git branch 分支名
切换分支
git checkout 分支名
合并分支
git merge 分支名
删除分支
git branch -d 分支名
合并冲突
如果两个分支都提交了同一个文件的版本
那么合并时会冲突
查看冲突
git log --graph
或
git status
查看冲突位置
解决冲突
当合并冲突后会在冲突的文件中标注出冲突的位置
进入文件融合冲突并且再次提交修改
这时 两个版本将同时指向融合后的版本
快速合并
默认合并使用快速合并
快速合并时 把其他分支的内容合并到当前分支不会创建新的版本
但是快速合并模式下graph 中看不出合并的过程 因为在主分支中合并其他分支并不会创建一个新的版本
禁用快速合并
git merge --no-ff -m 分支说明 分支名
在合并后不使用快速合并并且创建一个新的版本
保存工作现场
git stash
保存工作现场后git status 会显示工作区干净
查看保存的工作现场
git stash list
切换到保存的工作现场
git stash pop