Git(一): 基础操作

Git, 作为一款先进的版本控制工具,已经越来越多被大家才采用。但是由于其学习成本不小,阻拦的不少人,这里推荐廖学峰老师的Git入门教程博客

本博客是对廖雪峰老师博客中的Git命令的简版概述,便于日常使用查询

figure

一、Git 入门

1.1 Git 安装

从官网下载安装Git,然后执行下述命令看是否输出版本信息,验证Git是否安装成功,

1
git --version

1.2 Git 配置

配置用户信息, 分别执行下述命令,设置您的全局用户名和邮箱信息

1
2
git config --global user.name "Aaron Zhu"
git config --global user.email "tony@qq.com"

1.3 基本命令

  • 查看当前目录 Git 版本库状态
1
git status
  • 查看各版本的 commit message 、 commit id
1
git log
  • 查看操作Git 的命令历史记录. 版本回退后, git log命令显示的是当前版本之前的版本信息和commit id,无法查看当前版本之后版本的commit message、commit id。故可以使用如下命令,查看之后版本的commit id
1
git reflog
  • 比较工作区中文件的修改变化
1
git diff a.java     // 比较 a.java 文件的改动

二、版本库基本操作

2.1 创建版本库

在项目文件夹(无须为空文件夹)下,执行下述命令创建版本库,执行成功后会在该目录下创建一个.git的隐形文件夹

1
git init        // 创建 Git 版本库

2.2 添加新文件、文件修改

使用命令git add 将新文件、文件修改 添加到暂存区Stage, 注意,可反复多次使用,添加多个文件、修改

1
2
3
git add main.c      // 添加 当前目录下的 main.c 文件
git add folder1/ // 添加 当前目录下的 floder目录中的所有文件(包含子目录文件)
git add * // 添加 当前目录下的 所有文件 (包含子目录文件)

2.3 文件删除

删除文件操作,对于Git而言,本质上也是一种文件修改。所以在磁盘删除文件后,可以使用git add命令添加删除文件的修改到 Stage,同时Git也提供了下述命令用于添加 删除操作的文件修改

1
git rm text.c       // 添加 text.c 文件 删除操作

2.4 提交

对于 Stage 中的新文件、文件修改,使用命令git commit -m ,完成提交. Note: 版本的备注信息 message一般不建议省略,否则后期很难追溯

1
git commit -m "Frist Commit"

三、文件修改的撤销

对于某些 文件修改,我们可能并不想,甚至不能提交上去,那么该如何撤销呢?
文件修改的撤销,有两种场景:

  • 工作区的文件修改,即,欲撤销的文件修改未 add到 暂存区Stage中
  • 暂存区的文件修改,即,欲撤销的文件修改已经被 add到 暂存区Stage中

3.1 工作区中文件修改的撤销

工作区中文件修改的撤销 ,即, 此修改发生在工作区中,但是未被添加到暂存区Stage中

对于工作区的未添加的文件修改, 可以使用下述命令进行撤销。其撤销结果有 2 种情况:

  • 如果该 未添加的文件修改 是在 git add 后修改的,即之前修改了若干次加入Stage后 ,然后又发生了修改,则撤销后,恢复为Stage中的版本
  • 如果该 未添加的文件修改 过程中,从未添加到Stage中,则恢复为版本库中的版本

即:该文件的撤销结果,为最近一次 git add 或 git commit 的文件状态。即,该状态之后发生了任何未添加的修改都将被撤销

1
git checkout  -- filename.c     // 丢弃 filename.c 文件 在 工作区 的修改

Note: 该用法中(工作区中文件修改的撤销),命令中的 不可省略,否则意为 切换分支

3.2 暂存区中文件修改的撤销

暂存区中文件修改的撤销, 即,文件修改,被意外的add到了暂存区
使用下述命令,将暂存区的文件修改,重新放回工作区,同时暂存区清空。执行后可以看到,文件状态为被修改,且未被添加到暂存区。此时,工作区中的文件修改,你可以继续编辑、添加、提交,也可以继续撤销,对于工作区中文件修改的撤销,请参考上文

1
git reset HEAD main.js      // 撤销 暂存区中 main.js 文件件修改,重新放回工作区,清空暂存区

四、版本回滚

4.1 回退到之前

在Git中,用HEAD表示当前版本,也就是最新的提交版本。上一个版本就是HEAD^ ,上上一个版本就是HEAD^^ ,以此类推……当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reset 命令 回退到之前的版本

1
2
3
git reset --hard HEAD^     // 回退到上一个版本
git reset --hard HEAD^^ // 回退到上一个版本
git reset --hard xxxx // xxxx 为之前版本的commit id的前几位

4.2 回退到之后

代码回退到之前的版本后,如果想继续回退到之后的版本,则无法使用上文HEAD标识回退到未来的版本,但可以使用commit id的方法进行回退

1
2
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
1
git reflog

五、标签

在Git中,不同版本的代码是以commit id作为版本号进行区分的,但是由于commit id是Git计算生成,不便记忆。故可在指定版本上添加上自定义标签,便于使用(相当于给某个版本代码,取个易于记忆的别名,方便日后取用)。

5.1 添加标签

  • 可以使用如下命令给当前所在版本添加标签
1
2
git tag tagName      // 在当前版本添加标签 tagName
git tag v1.0 // 在当前的版本,添加标签 v1.0
  • 如果想给之前的某个版本添加标签,无须回退到该版本,只需在上述命令后添加该版本的commit id即可
1
2
git tag tagName commitId    // 在指定commit id的版本上添加标签 tagName    
git tag v0.8 3cbd33 // 向commit id为3cbd33的版本添加标签 v0.8
  • 像提交版本添加备注信息便于日后追溯一样,在添加标签时,同样也可以添加关于该标签的注释信息
1
2
3
4
5
git tag -a tagName -m <message>                     // 在当前的版本上添加标签 tagName,备注信息为message
git tag -a v1.1 -m "version 1.0 Final" // 在当前版本上添加标签 v1.1,备注信息为version 1.0 Final

git tag -a tagName -m <message> 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 查看标签

  • 使用下述命令查看目前已经添加的所有的标签名
1
git tag     // 显示所有添加的标签名
  • 使用下述命令查看指定标签版本的信息,包括commit id、时间 …
1
2
git show tagname       // 查看指定标签名的版本信息
git show v0.8 // 查看标签v0.8的版本信息
0%