git入门 常用命令总结
Git基本操作
-
安装git
sudo apt-get install git
-
创建版本库
git init
-
版本创建与回退
-
版本创建
-
加入暂存区
-
文件修改或增加后
git add filename
-
删除文件
git rm filename
或者
rm filename
git add filename
-
-
提交暂存区内容到版本库
git commit -m 'version name'
-
-
版本记录查看
git log
-
以简短形式查看
git log --pretty=oneline
-
仅查看少数记录
git log -n
-
以连接线形式查看
git log --graph
-
-
版本回退
git reset --hard HEAD^
git reset --hard HEAD~3
-
撤销版本回退
git reset --hard commit_id
查看操作记录
git reflog
-
-
工作区和暂存区
- 工作区:就是工程项目所在目录
-
暂存区:
.git
文件夹是git的版本库,其中最重要的就是称为stage的暂存区,还有git 自动创建的第一个分支master,以及指向master的指针HEAD(每次commit后HEAD指向最新版本),git add
把文件修改添加到暂存区,git commit
提交修改,实际上就是把暂存区的所有内容提交到当前分支 -
查看工作区状态命令
git status
-
撤销修改
-
修改后未进行
git add/rm
的情况git checkout -- filename
-
修改后已进行
git add/rm
的情况-
首先取消暂存区该文件的暂存
git reset HEAD filename
-
再使用上面命令进行复原
git checkout --filename
-
-
修改后已进行
git add
和git commit
只能进行版本回退来恢复
-
-
对比文件不同
-
对比工作区和某个版本中文件的不同
git diff HEAD_pointer -- filename(In the working directory)
---
对应HEAD指向版本的文件,+++
代表工作区中文件 -
对比两个版本中文件的不同
git diff HEAD HEAD^ -- filename
---
对应HEAD版本的文件+++
对应HEAD^版本的文件
-
Git 分支操作
多个分支可以理解为互不干扰的流水线
-
分支基本操作
-
分支创建与合并
默认在主分支mater上进行操作,HEAD严格来说不是指向commit,而是指向分支,分支的指针才是指向提交的,即HEAD指向的是当前分支
创建新分支一定程度上可以理解为创建了一个新的分支指针
-
查看当前有几个分支和当前所在分支
git branch
*
表示当前HEAD
所指向的分支 -
创建分支
git branch branchname
-
切换分支
git checkout branch_name
-
创建并切换到新分支
切换即改变HEAD所指向的分支
git checkout -b branch_name
新分支有旧分支的所有内容
-
合并分支
git merge branch_name
fast-forward
表示快速合并,即仅仅移动分支指针,默认情况下使用快速合并
-
-
-
解决分支冲突
即在两个分支中对同一个文件进行了commit
此时合并时候存在分支冲突,此时用
git status
查看分支冲突对应的文件然后用编辑器查看相应文件,git用
<<<<<<<
,=======
,>>>>>>>>
标记出不同分支的内容,通过手动修改文件并进行add和commit后实现手动解决分支冲突
-
分支管理策略
合并分支是,如果可能,git默认使用fast forward模式,但是有些快速合并不能合并修改但不会产生分支冲突(例如在两个分支中分别修改了不同的文件),这个时候git会自动在合并之后做一次新的comit
这种情况下会自动跳出GNU Nano,用来输入commit的注释
-
Bug分支
-
强制禁用fast forward模式, git会在merge时生成一个新的commit
git merge --no-ff -m 'annotation' branch_name
-
储存和复原分支现场
即需要切换到bug分支时,本分支的内容还未进行commit,则需要进行现场保存
Bug修复过程
-
将工作现场储藏起来
git stash
-
创建并切换到bug分支
-
-
在该分支中修复bug后进行commit
将bug分支与master分支进行禁用fast forward合并
-
-
修复bug完成后回到原来编辑的分支继续
- 查看分支现场储存列表 `git stash list` - 恢复工作现场 `git stash pop`