来源:我的博客站 OceanicKang |《Git 基础教程》

Git的设计让使用者觉得自己比想象中的笨。 —— Andrew Morton(Linux核心开发者)

若没有安装 Git,请看《Windows 下配置 Git 环境变量》

初次使用 Git 前的配置

在命令行输入以下命令:

> git config --global user.name "用户名"
> git config --global user.email "邮箱"

这个用户名和邮箱将是你未来使用 Git 进行项目版本管理的身份标识

用户名和邮箱不要使用中文

1.png

理论基础

Git 记录的是什么?

用过 SVN 的应该都知道,SVN 记录的是每一次版本变动的内容

2.png

而 Git 则是将每个版本独立保存

3.png

三棵树:工作区域、暂存区域和 Git 仓库

1、Working:工作区域,一般是项目所存放的目录

2、Stage:暂存区域,暂存所有改动准备提交

3、Repository:Git 仓库,最终存放项目的位置,并且携带版本编号

4.png

Git 的工作流程

1、在工作目录中添加、修改文件

2、将需要进行版本管理的文件放入暂存区域

3、将暂存区域的文件提交到 Git 仓库

Git 管理的文件有三种状态

  • 已修改(modified)

  • 已暂存(staged)

  • 已提交(committed)

Git 命令的简单流程

14.png

简单使用

创建项目文件夹,并初始化仓库

> git init

5.png

创建了 .git 文件夹(默认隐藏)

添加 README.md 文件,并提交到 Git 仓库

> git add ./README.md
> git commit -m "add a readme file"

6.png

基础操作

查看状态

> git status

7.png

添加 LICENSE 文件后

8.png

LICENSE 加入暂存区

9.png

将暂存区的最新记录撤回

10.png

LICENSE 提交到仓库,并修改 LICENSE 文件

11.png

  • git checkout -- <file>:将仓库中的文件覆盖回本地(慎重)

修改一次 LICENSE并加入暂存区,后再修改一次但不加入暂存区

12.png

查看历史

> git log
> git log --all --oneline --graph # 图形化简要显示所有log(包括分支)

13.png

回到之前版本

> git reset HEAD~

15.png

移动 HEAD 的指向,将其指向上一个快照

reset 命令说明

1、git reset --mixed HEAD~:等于 git reset HEAD~

2、git reset --soft HEAD~:移动 HEAD 的指向,将其指向上一个快照。并将 HEAD 移动前指向的快照回滚到暂存区域

3、git reset --hard HEAD~:移动 HEAD 的指向,将其指向上一个快照。将 HEAD 移动后指向的快照回滚到工作目录

指定 ID 回滚

> git reset <版本快照的ID>

回滚个别文件

> git reset <版本快照> <文件名 or 路径>

版本对比

比较暂存区域与工作目录

> git diff

比较两个历史快照

> git diff <快照ID1> <快照ID2>

16.png

比较当前工作目录和 Git 仓库中的快照

> git diff <快照ID>

比较暂存区域和 Git 仓库快照

> git diff --cached <快照ID>

17.png

修改最近提交

1、场景一:版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add)

2、场景二:版本刚一提交(commit)到仓库,突然想起版本说明写得不够全面

执行带 --amend 选项的 commit 提交命令,Git 就会“更正”最近的一次提交

> git commit --amend -m "这是修改的说明"

删除文件

> git rm <文件名>

该命令删除的只是工作目录和暂存区域的文件,也就是取消跟踪,在下此提交时不纳入版本管理

> git rm -f <文件名>        # 暴力删除
> git rm --cached  <文件名> # 保留工作目录

重命名文件

> git mv <旧文件名> <新文件名>

Git 分支

18.png

克隆一份全新的目录以同样拥有 5 个分支来说,SVN 是同时复制 5 个版本的文件,也就是说重复 5 次同样的动作。

而 Git 只是获取文件的每个版本的元素,然后只载入主要的分支(master)

创建 feature 分支

> git branch feature

19.png

切换到 feature 分支

> git checkout feature
> git checkout -b feature2 # 自动创建分支并切换

20.png

将指定分支合并到当前分支

> git checkout master # 切换到主分支
> git merge feature   # 将 feature 分支合并到 master 分支

删除 feature2 分支

> git branch -d feature2

常见实际开发中的分支结构

21.png

【完】附一份《Git 文档笔记》

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐