Git

安装和使用

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版本库
在版本库中分为两部分

  1. 暂存区
    使用git add 把修改的内容添加进暂存区
  2. 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

推荐阅读更多精彩内容