git使用教程

1.创建仓库

创建仓库的两种方式:

  • 创建一个全新的仓库:git init 会在命令行当前的目录初始化创建仓库
  • 远程克隆一个仓库:git clone 被克隆仓库的地址
1
2
3
4
5
# 进入要被创建为仓库的文件夹
git init

# 或者克隆一个远程的仓库
git clone 被克隆仓库的地址

创建完成好了仓库,会在当前的仓库中生成一个.git文件夹

克隆远程仓库会将远程仓库拉取到当前的目录下

2.暂存区add

  • git add 将提交的所有修改放到暂存区
1
2
3
4
5
6
7
8
9
10
11
# 添加指定文件到暂存区,包括被修改的文件
$ git add [file1] [file2] ...

# 添加当前目录的所有文件到暂存区
$ git add .

# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

3.提交commit

指令 描述
git commit -m ‘说明’ 提交变更,参数-m设置提交的描述信息,应该正确提交,不带该参数会进入说明编辑模式
git commit -a 参数-a,表示直接从工作区提交到版本库,略过了git add步骤,不包括新增的文件
git commit [file] 提交暂存区的指定文件到仓库区
git commit –amend -m 使用一次新的commit,替代上一次提交,会修改commithash值(id)
git log -n20 查看日志(最近20条),不带参数-n则显示所有日志
git log -n20 –oneline 参数“--oneline”可以让日志输出更简洁(一行)
git log -n20 –graph 参数“--graph”可视化显示分支关系
git log –follow [file] 显示某个文件的版本历史
git blame [file] 以列表形式显示指定文件的修改记录
git reflog 查看所有可用的历史版本记录(实际是HEAD变更记录),包含被回退的记录(重要
git status 查看本地仓库状态,比较常用的指令,加参数-s简洁模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 提交暂存区到仓库区
$ git commit -m [message]

# 提交所有修改到仓库
$ git commit -a -m'修改README的版权信息'

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

# 用新的commit,替代上一次提交,如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 查看日志(最近20条),不带参数-n则显示所有日志
$ git log -n20

# 用参数“--oneline”可以让日志输出更简洁(一行)
git log -n2 --oneline

4.Git的“指针”引用

  • 标签 就是对某一个提交记录的的 固定 “指针”引用,取一个别名更容易记忆一些关键节点。存储在工作区根目录下.git\refs\tags
  • 分支 也是指向某一个提交记录的“指针”引用,“指针”位置可变,如提交、更新、回滚。存储在工作区根目录下.git\refs\heads
  • HEAD:指向当前活动分支(最新提交)的一个“指针”引用,存在在“.git/HEAD”文件中,存储的内容为“ref: refs/heads/master”。

5.提交标识符id,head~n

  • commit id,一个40位编码,指令中使用的时候可以只输入前几位(6位)
  • 还有一种就是HEAD~n,是基于当前HEAD位置的一个相对坐标
    • HEAD 表示当前分支的最新版本,是比较常用的参数。
    • HEAD^上一个版本,HEAD^^ 上上一个版本。
    • HEAD~HEAD~1 表示上一个版本,以此类推,HEAD^10 为最近第10个版本。
    • HEAD@{2}git reflog日志中标记的提交记录索引。

6.diff比较不同版本文件之间的差距

指令 描述
git diff 查看暂存区和工作区的差异
git diff [file] 同上,指定文件
git diff –cached 查看已暂存的改动,就是暂存区与新版本HEAD进行比较
git diff –staged 同上
git diff –cached [file] 同上,指定文件
git diff HEAD 查看已暂存的+未暂存的所有改动,就是与最新版本HEAD进行比较
git diff HEAD~ 同上,与上一个版本比较。HEAD~表示上一个版本,HEAD~10为最近第10个版本
git diff [id] [id] 查看两次提交之间的差异
git diff [branch] 查看工作区和分支直接的差异
1
2
3
4
5
6
7
8
# 查看文件的修改
$ git diff README.md

# 查看两次提交的差异
$ git diff 8f4244 1da22

# 显示今天你写了多少行代码:工作区+暂存区
$ git diff --shortstat "@{0 day ago}"

Git是目前最主流的分布式版本控制系统,是免费开源的项目,核心的版本控制,用于进行多人的代码编辑,是团队开发的必备工具!

注:本文参考并感谢安木夕