git的基本使用

由来

git

要不说人家是大佬呢,一言不合就自己写一个:+1:

安装

下载对应操作系统的 Git 客户端版本 https://git-scm.com/downloads

Linux

centos上安装

windows

下载对应的32位或者64位版本,点击安装即可

Mac

homebrew命令安装

核心概念

git基本流程

名称

释义

Workspace

工作区:.git文件所在的目录就是工作区,一般是项目的根目录

Index/Stage

暂存区:介于工作区和仓库区之间,暂存修改的

Repository

仓库区/本地仓库:git初始化后,会在当前目录生成一个.git目录,这就是版本库

Remote

远程仓库:网络上的另一个版本库,可以和本地库交互

git 的基本工作流程

  1. 在工作目录中修改文件。

  2. 暂存文件,将文件的快照放入暂存区域。

  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

git 文件的生命周期

git文件的生命周期2
  1. 未追踪的文件(Untracked)在 git add 之后会变成已暂存(staged)状态。

  2. 未修改的文件(Unmodified)在被修改编辑之后会变成已修改(modified)状态。

  3. 已修改(modified)的文件在 git add之后会变成已暂存(staged)状态。

  4. 已暂存的文件(staged)在 git commit 之后会变成未修改(Unmodified)状态。

  5. 未修改的文件(Unmodified)在 git rm 之后会变成未跟踪(Untracked)状态(注意git rm会删除掉指定的文件)。

git 的三种状态

  • 已修改(modified) 表示修改了文件,但还没保存到数据库中,目前在工作目录(Workspace)

  • 已暂存(staged) 表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中,目前在暂存区域(Index)

  • 已提交(committed) 表示数据已经安全的保存在本地仓库中,目前在本地仓库(Repository)

git 的文件分类

  • 追踪的 Tracked,已经加入版本库中的文件

  • 未追踪的 Untracked,未加入到版本库中的,未被管理的文件

  • 忽略的 Ignored, git 不再关注的文件,例如一些临时文件

.gitignore文件

书写格式规范

  • 所有空行或者以 开头的行都会被 Git 忽略。

  • 可以使用标准的 glob 模式匹配。

  • 匹配模式可以以(/)开头防止递归。

  • 匹配模式可以以(/)结尾指定目录。

  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

详解参考 https://github.com/github/gitignore

glob模式

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。

星号(*)匹配零个或多个任意字符;

[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);

问号(?)只匹配一个任意字符;

如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字);

使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/za/b/c/z等。

git基本操作

新建代码仓库

设置用户信息

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)

添加/删除文件

:warning: 这一步是把文件的当前变化增加到暂存区中,也就是以后这个文件那需要版本库来跟踪管理,注意这不是提交。

代码提交

git的提交分为两个步骤:

  1. 暂存变更:add作用是把新文件或者文件新的改动添加到一个暂存区stage,也就是加入到index中

  2. 提交变更:commit提交的是暂存区中的改动,而不是物理文件目前的改动,提交到当前分支,默认是master

远程同步

远程版本库名origin,这是个习惯用法,将建立origin和后面url的映射,这些信息保存在.git/config文件的[remote "origin"]端中。

分支

分支/标签

分支

标签

查看信息

diff 比较

HEAD HEAD 可以看做是一个游标,一般是指向当前分支最后一次提交。

HEAD 的值存储在.git/HEAD中。

表示

说明

HEAD

指代最后一次 commit

HEAD^

指代上一次提交

HEAD^^

指代上上一次提交

HEAD~n

表示倒数第n次提交

log 提交历史

撤销

  • checkout 检出

    checkout 用于创建、切换分支,或恢复工作区文件。

    注意,checkout 会重写工作区,这个命令还是有危险性的。

  • reset 重置

    reset 操作,要慎重,用于版本回滚,再恢复,但也要慎重使用。

  • revert 撤销

    revert 主要用在主分支上,保留信息。在工作分支上,可以采用 reset 。

其他

参考链接

  • 杰哥的IT之旅:常用的 Git 命令清单

  • 马哥教育:Git基本操作

Last updated

Was this helpful?