Git 基础教程
     发布在:Others      浏览:33      评论:0 条评论

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

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

初次使用 Git 前的配置

在命令行输入以下命令:

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

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

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

Git 基础教程

理论基础

Git 记录的是什么?

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

Git 基础教程

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

Git 基础教程

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

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

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

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

Git 基础教程

Git 的工作流程

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

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

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

Git 管理的文件有三种状态

  • 已修改(modified)

  • 已暂存(staged)

  • 已提交(committed)

Git 命令的简单流程

Git 基础教程

简单使用

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

> git init
Git 基础教程

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

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

> git add ./README.md
> git commit -m "add a readme file"
Git 基础教程

基础操作

查看状态

> git status
Git 基础教程

添加 LICENSE 文件后

Git 基础教程

LICENSE 加入暂存区

Git 基础教程

将暂存区的最新记录撤回

Git 基础教程

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

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

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

Git 基础教程

查看历史

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

回到之前版本

> git reset HEAD~
Git 基础教程

移动 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>
Git 基础教程

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

> git diff <快照ID>

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

> git diff --cached <快照ID>
Git 基础教程

修改最近提交

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

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

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

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

删除文件

> git rm <文件名>

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

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

重命名文件

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

Git 分支

Git 基础教程

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

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

创建 feature 分支

> git branch feature
Git 基础教程

切换到 feature 分支

> git checkout feature
> git checkout -b feature2 # 自动创建分支并切换
Git 基础教程

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

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

删除 feature2 分支

> git branch -d feature2

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

Git 基础教程

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

Responses