Git, 作为一款先进的版本控制工具,已经越来越多被大家才采用。但是由于其学习成本不小,阻拦的不少人,这里推荐廖学峰老师的Git入门教程博客
本博客是对廖雪峰老师博客中的Git命令的简版概述,便于日常使用查询
一、Git 入门
1.1 Git 安装
从官网下载安装Git,然后执行下述命令看是否输出版本信息,验证Git是否安装成功,
git --version
1.2 Git 配置
配置用户信息, 分别执行下述命令,设置您的全局用户名和邮箱信息
git config --global user.name "Aaron Zhu"
git config --global user.email "[email protected]"
1.3 基本命令
- 查看当前目录 Git 版本库状态
git status
- 查看各版本的 commit message 、 commit id
git log
- 查看操作Git 的命令历史记录. 版本回退后, git log命令显示的是当前版本之前的版本信息和commit id,无法查看当前版本之后版本的commit message、commit id。故可以使用如下命令,查看之后版本的commit id
git reflog
- 比较工作区中文件的修改变化
git diff a.java // 比较 a.java 文件的改动
二、版本库基本操作
2.1 创建版本库
在项目文件夹(无须为空文件夹)下,执行下述命令创建版本库,执行成功后会在该目录下创建一个.git的隐形文件夹
git init // 创建 Git 版本库
2.2 添加新文件、文件修改
使用命令git add
git add main.c // 添加 当前目录下的 main.c 文件
git add folder1/ // 添加 当前目录下的 floder目录中的所有文件(包含子目录文件)
git add * // 添加 当前目录下的 所有文件 (包含子目录文件)
2.3 文件删除
删除文件操作,对于Git而言,本质上也是一种文件修改。所以在磁盘删除文件后,可以使用git add命令添加删除文件的修改到 Stage,同时Git也提供了下述命令用于添加 删除操作的文件修改
git rm text.c // 添加 text.c 文件 删除操作
2.4 提交
对于 Stage 中的新文件、文件修改,使用命令git commit -m
git commit -m "Frist Commit"
三、文件修改的撤销
对于某些 文件修改,我们可能并不想,甚至不能提交上去,那么该如何撤销呢?
文件修改的撤销,有两种场景:
- 工作区的文件修改,即,欲撤销的文件修改未 add到 暂存区Stage中
- 暂存区的文件修改,即,欲撤销的文件修改已经被 add到 暂存区Stage中
3.1 工作区中文件修改的撤销
工作区中文件修改的撤销 ,即, 此修改发生在工作区中,但是未被添加到暂存区Stage中
对于工作区的未添加的文件修改, 可以使用下述命令进行撤销。其撤销结果有 2 种情况:
- 如果该 未添加的文件修改 是在 git add 后修改的,即之前修改了若干次加入Stage后 ,然后又发生了修改,则撤销后,恢复为Stage中的版本
- 如果该 未添加的文件修改 过程中,从未添加到Stage中,则恢复为版本库中的版本
即:该文件的撤销结果,为最近一次 git add 或 git commit 的文件状态。即,该状态之后发生了任何未添加的修改都将被撤销
git checkout -- filename.c // 丢弃 filename.c 文件 在 工作区 的修改
Note: 该用法中(工作区中文件修改的撤销),命令中的 -- 不可省略,否则意为 切换分支
3.2 暂存区中文件修改的撤销
暂存区中文件修改的撤销, 即,文件修改,被意外的add到了暂存区
使用下述命令,将暂存区的文件修改,重新放回工作区,同时暂存区清空。执行后可以看到,文件状态为被修改,且未被添加到暂存区。此时,工作区中的文件修改,你可以继续编辑、添加、提交,也可以继续撤销,对于工作区中文件修改的撤销,请参考上文
git reset HEAD main.js // 撤销 暂存区中 main.js 文件件修改,重新放回工作区,清空暂存区
四、版本回滚
4.1 回退到之前
在Git中,用HEAD表示当前版本,也就是最新的提交版本。上一个版本就是HEAD^ ,上上一个版本就是HEAD^^ ,以此类推……当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git reset 命令 回退到之前的版本
git reset --hard HEAD^ // 回退到上一个版本
git reset --hard HEAD^^ // 回退到上一个版本
git reset --hard xxxx // xxxx 为之前版本的commit id的前几位
4.2 回退到之后
代码回退到之前的版本后,如果想继续回退到之后的版本,则无法使用上文HEAD标识回退到未来的版本,但可以使用commit id的方法进行回退
git reset --hard commitId // 回退到之后的 commit id 版本
git reset --hard 1c23bc // 回退到 commit id 为 1c23bc ... xxxx 的版本;commit id 数字串较长,一般取前6位即可区分,如果不够,可以再多取几位
- 如果git bash窗口未关闭,可以通过窗口记录,找到并使用之后版本的 commit id进行回退
- 如果git bash窗口重新打开了,也可以使用下述命令找到你 操作Git 的命令历史记录,从而找到之后版本的commit id
git reflog
五、标签
在Git中,不同版本的代码是以commit id作为版本号进行区分的,但是由于commit id是Git计算生成,不便记忆。故可在指定版本上添加上自定义标签,便于使用(相当于给某个版本代码,取个易于记忆的别名,方便日后取用)。
5.1 添加标签
- 可以使用如下命令给当前所在版本添加标签
git tag tagName // 在当前版本添加标签 tagName
git tag v1.0 // 在当前的版本,添加标签 v1.0
- 如果想给之前的某个版本添加标签,无须回退到该版本,只需在上述命令后添加该版本的commit id即可
git tag tagName commitId // 在指定commit id的版本上添加标签 tagName
git tag v0.8 3cbd33 // 向commit id为3cbd33的版本添加标签 v0.8
- 像提交版本添加备注信息便于日后追溯一样,在添加标签时,同样也可以添加关于该标签的注释信息
git tag -a tagName -m // 在当前的版本上添加标签 tagName,备注信息为message
git tag -a v1.1 -m "version 1.0 Final" // 在当前版本上添加标签 v1.1,备注信息为version 1.0 Final
git tag -a tagName -m commitId // 在指定commit id的版本上添加标签 tagName,备注信息为message
git tag -a v0.3 -m "version 0.8 SNAPSHOT" 2caf9b // 在commit id为 2caf9b 的版本上添加标签 v0.3 tagName,备注信息为version 0.8 SNAPSHOT
5.2 查看标签
- 使用下述命令查看目前已经添加的所有的标签名
git tag // 显示所有添加的标签名
- 使用下述命令查看指定标签版本的信息,包括commit id、时间 ...
git show tagname // 查看指定标签名的版本信息
git show v0.8 // 查看标签v0.8的版本信息