前言
Git和其它版本控制系统如SVN的不同之处就是有暂存区的概念。Git本地有四个工作区域:工作目录(working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。
Workspace:工作区,就是本地电脑能够看到的文件夹,本地放代码的地方
Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Respository:仓库区(也称为版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交互。
1、创建版本
# 在当前目录新建一个Git代码库
git init
# 新建一个目录,将其初始化为Git代码库
git init [project-name]
# 下载一个项目和它的整个代码历史
git clone [url]
2、查看文件状态
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
3、将文件从工作区添加到暂存区
#添加到指定文件到暂存区
git add [file1][file2]...
#添加指定目录到暂存区,包括子目录
git add [dir]
4、将暂存区文件提交到资源库(版本库)
#将暂存区文件提交到资源库(版本库)
git commit -m "本次提交说明"
5、查看提交历史记录
#命令显示从最近到最远的提交日志
git log
#精简log信息
git log --pretty=oneline
6、git commit后版本回退
回退时,Git需要知道当前是哪个版本,在Git中,用HEAD
表示当前版本,一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
回退时可以使用git reset
命令:
$ git reset --hard HEAD^
还有一种方式:
git reset --hard commitId
这种方式需要知道commit id,这种方式就是将指针指向指定版本,也就是说可以将版本切换到任意一个版本时期。
但是,回退版本会导致git log中信息被删除,如果需要找到已经被回退的版本,可以使用
$ git reflog
git reflog
用来记录你的每一次命令
7、git add后从暂存区回退到工作区
#移除不必要的添加到暂存区的文件
git reset HEAD 文件名
8、在工作区修改后,回退修改
git checkout 文件名
9、git commit后,从git 回退到暂存区
#去掉上一次的提交(变成add之后,commit之前状态)
git reset --soft HEAD^
10、远程操作
# 取回远程仓库的变化,并与本地分支合并
git pull
# 上传本地指定分支到远程仓库
git push
11、比较修改
#未git add 时和暂存区的比较
git diff file
#查看工作区和版本库里面最新版本的区别
git diff HEAD --
12、删除文件
#删除工作空间文件
#rm file
#恢复刚刚删除的工作空间文件,未git add
git checkout -- file
#确实要从版本库中删除该文件
git rm file
13、分支管理
#创建分支
git branch 分支名
#切换分支
git checkout dev
#创建分支并切换分支
git checkout -b 分支名
#查看当前分支
git branch
#合并分支
git merge 需要合并到当期分支的分支名
#删除分支
git branch -d 分支名
14、远程操作
# 取回远程仓库的变化,并与本地分支合并
git pull
# 上传本地指定分支到远程仓库
git push
参考资料: