第一讲:Git分区,配置与日志

栏目: IT技术 · 发布时间: 4年前

内容简介:曾经听到过这样一句话:不会因此,为了避免这种情况,接下来我们就一起来好好学习

前言

曾经听到过这样一句话:不会 git 就不要敲代码了。细细品味确实有其中的道理,可能是当事人代码被强行覆盖后的叹息吧!

第一讲:Git分区,配置与日志

因此,为了避免这种情况,接下来我们就一起来好好学习 git 的相关知识吧!不怕你不会,就怕你不看!

一、 git 的三个分区:

  • 工作区( working directory
  • 暂存区( stage
  • 版本库

它们之间的关系为:

第一讲:Git分区,配置与日志

通过 git status 查看 git 状态时, 红色 的文件表示在 工作区绿色 的文件表示在 暂存区

第一讲:Git分区,配置与日志

工作区中的文件只要通过 git add 命令添加进了 Git 仓库,就会被追踪。

二、 git 常用命令

创建版本库 版本控制 远程协作 查看信息
git init git add git pull git help
git clone git commit git push git log
* git rm * git diff

三、 git 配置

1. git config

可以通过三个地方的三个文件设置 git 配置参数,分别代表三个不同的作用域:

  • /etc/gitconfig :作用域:一台计算机(操作系统)上的所有用户,几乎不会使用, 优先度低于 --global ;设置方法:

    git config --system
  • ~/.gitconfig :作用域:计算机中的某用户创建的所有项目,常用, 优先度低于- -local ;设置方法:

    git config --global
  • .git/config :作用域:某一特定的版本库,不常用, 是最具体的,优先度最高 ;设置方法:

    git config --local

可使用 git config 查看相关操作命令以及提示:

第一讲:Git分区,配置与日志

2. user.nameuser.email

添加配置

user.nameuser.email 指的是用户名和邮箱,这些两个配置会被添加到提交信息中,可以搭配上述命令配置到三种作用域中:

  • 仓库配置 :通过 --local 命令配置,作用域为当前版本库,配置写入 .git/config 文件中,优先度第一;
git config --local user.name "张三"
git config --local user.email test1@git.com

以上为配置特定版本库( mygit )的用户和邮箱:这样配置就可以通过两个版本库来进行多人操作的模拟;

第一讲:Git分区,配置与日志

  • 用户配置 :通过 --global 命令配置,作用域为当前系统用户,配置写入 ~/.gitconfig 文件,优先度第二;
git config --global user.name "张三哥哥"
git config --global user.email test2@git.com

第一讲:Git分区,配置与日志

  • 系统配置 :通过 --system 命令配置,作用域为当前操作系统 所有用户 ,配置写入 /etc/gitconfig 文件,优先度第三;这里需要管理员身份运行 git bash 才有修改权限:
git config --system user.name "张三爸爸"
git config --system user.email test3@git.com

第一讲:Git分区,配置与日志

查看配置

  • 直接查看配置文件(可通过 cat 指令查看):

    • 仓库配置.git/config

    第一讲:Git分区,配置与日志

    • 用户配置~/,gitconfig

    第一讲:Git分区,配置与日志

    • 系统配置/etc/gitconfig

    第一讲:Git分区,配置与日志

  • 通过 git config --list 可以批量查看配置信息:

第一讲:Git分区,配置与日志

  • 通过 git config user.name/email 查看:

第一讲:Git分区,配置与日志

可以看到输出的配置信息是 仓库配置 张三,验证了仓库配置的 优先级最高

修改配置

删除 config 配置

git config --unset <参数名>

首先设置错误参数,随后查看该配置:

第一讲:Git分区,配置与日志

第一讲:Git分区,配置与日志

删除该配置:

第一讲:Git分区,配置与日志

第一讲:Git分区,配置与日志

修改 user.name/email 配置

  • 可以通过添加配置的方式对原有配置进行覆盖,从而达到修改的效果:

第一讲:Git分区,配置与日志

  • 通过 --unset 命令 删除 指定的配置信息:

第一讲:Git分区,配置与日志

我们以该方式继续删除 用户配置 --global user.name张三哥哥 ,和 仓库配置 --local user.emailtest1@git.com

第一讲:Git分区,配置与日志

此时再次通过 git config user.name/email 查看配置信息 user.name/email

第一讲:Git分区,配置与日志

可以发现 user.name 显示的是系统配置: 张三爸爸user.email 显示的是用户配置: test2@git.com ,验证了用户配置优先级 第二 和系统配置优先级 第三

3. .gitignore

我们可以通过 git 提供的 .gitignore 文件配置不被 git 跟踪的文件。被添加到 .gitignore 文件中的文件名,将不会被 git 追踪。如下图中的新增文件 setting.properties

第一讲:Git分区,配置与日志

可见在 .gitignore (注意文件是官方规定好了的不能随便乱改)文件中添加了文件名 setting.properties 后, git 便不再追踪 setting.properties 这个文件了;

应用场景:通常将不需要提交的项目依赖文件(如 modules 目录下文件)添加到 .gitignore 文件中,这样每次提交都会自动忽略这些文件;

只要与.gitignore中内容相匹配的目录或文件就会被git忽略;再例:

第一讲:Git分区,配置与日志

.gtiignore文件非常重要,一般放在创建项目的根目录上。

注意在 .gitignore 文件中 一行写一个 文件名; .gitignore 文件也支持 正则表达式 比如:

  • *.a :忽略所有以 .a 结尾的文件;
  • !lib.a :表示除了 lib.a 文件,其余都会被忽略;
  • /TODO :仅仅忽略项目 根目录 下的 TODO 文件,不包括 subdir/TODOTODO 为示例文件);
    • 可以通过 /*/TODO 使一层目录下的 TODO 文件被忽略;
    • 通过 /**/TODO 使所有层目录下的 TODO 文件都被忽略;
  • build/ 表示忽略 build 目录下的所有文件;
  • doc/*.txt 表示忽略 doc 目录下所有的 .txt 文件,包括 doc/notes.txt 但不包括 doc/server/.arch.txt
    • doc/*/*.txt 会忽略 doc 目录及其任何一个子目录下的所有 .txt 文件,比如 doc/bin/2.txt/ * 表示一层目录);
    • doc/**/*.txt 则会把 doc 任何一层目录及其子目录下的 .txt 文件忽略;即 /**/ 两颗星表示所有层目录;

以下为某个使用 vue-cli3 创建项目下的 .gitignore 文件内容:

.DS_Store
node_modules
/dist

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

四、查看状态

1. git status

查看工作区的状态,该命令 经常使用 ;每执行一条指令后,都应使用该命令 查看 工作区和暂存区的 状态红色 表示对文件的更改还没提交到暂存区; 绿色 表示已提交到暂存区;

第一讲:Git分区,配置与日志

五、工作区 -> 暂存区

1. git add <file>

工作区 中的文件提交到 暂存区

  • git add test.txt :将工作区中的 test.txt 提交到暂存区;
  • git add test.txt test2.txt :将工作区中的 test.txttest2.txt 提交到暂存区;
  • git add . :将当前目录及其子目录下的所有文件从工作区提交到暂存区中;

第一讲:Git分区,配置与日志

六、暂存区 -> 版本库

1. git commit -m '注释'

将暂存区中的文件提交到版本库, 一定要添加注释,否则不让提交 :当注释很短时采用 -m 方式( mmessage 的意思):

第一讲:Git分区,配置与日志

2. git commit

当注释很长时,可以直接执行 git commit ,进入 vim 编辑器界面,在此处编写较长的注释,添加完注释后,通过 wq 保存并退出即可:

第一讲:Git分区,配置与日志

第一讲:Git分区,配置与日志

3. git commit -am '注释'

表示添加当前目录下所有已被 git 追踪的文件到暂存区中并提交,即相当于是 git add . git commit 两步操作的合成。

第一讲:Git分区,配置与日志

该方式只适用于已被 git 追踪的文件(即文件至少提交过一次) ,当文件第一次提交到暂存区时(此时该文件并未被 git 追踪)不可以使用该命令,而是要分开写,否则会报错:

第一讲:Git分区,配置与日志

七、工作区 <- 暂存区

简单来说,就是将 git status 指令显示出来的文件,从 绿色 变为 红色 ,大概有如下三种方法:

1. git rm --cached <file>

删除缓存区中的 <file> 文件,并将其还原到 工作区 。该指令需要对 暂存区 删除的文件进行一次提交操作,所以建议用第二种方法;

第一讲:Git分区,配置与日志

2. git restore --stage <file>

通过该指令,将文件从 缓存区 中移动到 工作区 ,这里的参数 --stage 写成 --staged 效果是一样的:

第一讲:Git分区,配置与日志

小贴士:可以使用 tab 键补全命令;

3. git reset HEAD <file>

将文件从 缓存区 中移到 工作区 ,作用与方法 2 一样:

第一讲:Git分区,配置与日志

八、撤销操作

这里指的是撤销工作区中对文件的操作,包括新增、修改、删除等,配合着前面第七点所讲的指令使用。大概有以下两种方法:

1. git checkout -- <file>

可以撤销 工作区 中对 flie 文件的改动操作(包括删除):注意 -- 后面要跟上空格:如果修改已经通过 git add 提交到 暂存区 ,该指令无效。

第一讲:Git分区,配置与日志

2. git restore <file>

可以撤销 工作区 中对 file 文件的操作,效果与方法 1 相同;

第一讲:Git分区,配置与日志

九、日志

git 的日志记录了 git 仓库对文件的所有操作,主要分为三大类:分支的 提交日志 、文件的 修改日志git操作日志 。通过查看这些日志信息,可以很好地了解 git 仓库的历史记录,并根据需要进行版本回退。

1.查看提交日志

使用的主要命令为 git log ,通过添加不同的参数,可以显示不同形式的提交日志,下面主要介绍其中常用的几种:

git log

查看版本库的提交( commit )历史:

第一讲:Git分区,配置与日志

  • 提交历史是倒叙的,最新的提交排在最前面;

  • Git 的提交 idcommit id )是一个 摘要值 ,这个摘要值实际上是通过 sha1 算法计算出来的 不重复字符串 。由此保证了每次提交 id 的唯一性;

  • Author 显示的是提交时优先级最高的配置,比如提交时有 --local 配置就显示它,没有就显示 --global 的配置;如上图中:第二次提交时使用的是修改过后的 config 李四,也就是优先级更高的 --local 配置;

git log -n

可以查看最近的 n 次的提交历史,比如通过 git log -3 查看最近 3 次的提交历史:

第一讲:Git分区,配置与日志

git log --graph

以图形化的形式显示提交历史:

第一讲:Git分区,配置与日志

git log --pretty=oneline

以一行的形式显示提交历史:

第一讲:Git分区,配置与日志

git log --graph --abbrev-commit

通过 --abbrev-commit 对提交信息进行简化:

第一讲:Git分区,配置与日志

还可以结合 --pretty=oneline 进行简写:

git log --pretty=oneline  --abbrev-commit

第一讲:Git分区,配置与日志

git log --pretty=oneline:"%h - %an, %ar : %s"

还可以按照规定的格式显示日志内容: %h :表示 commit id%an :表示提交人; %ar :表示提交时间; %s :表示提交信息;

第一讲:Git分区,配置与日志

2.查看修改日志

git blame file_name

第一讲:Git分区,配置与日志

如图所示,通过该命令可以清楚查看指定的文件的每次修改。包括修改用户,修改时间等;

3.查看操作日志

git reflog

通过该指令可以详细地查看,每次操作所在提交节点的 commit id ,以及在此提交节点上所执行的操作(指令);并且是倒叙显示的,即最近一次操作的序号为 {0}

第一讲:Git分区,配置与日志

git log :只能显示 当前分支 的提交历史,如果进行版本回退,会丢失较后版本的提交信息,如下图所示:

第一讲:Git分区,配置与日志

可以看到通过 reset 进行版本回退,丢失了 4th commit 的提交信息,此时可通过 git reflog 查看操作日志的相关操作信息来回到最新的版本。

总结:

  • 总体上来说,操作日志包含了修改日志和提交日志,是最全的 git 日志;

  • 注意:不是通过 git 命令,而是手动修改文件,这些修改记录不会被 git 日志记录。所以,推荐使用 git 指令进行操作;


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高性能网站

高性能网站

(美)苏德 / 东南大学出版社 / 2008年 / 28.00元

《高性能网站》中的规則向你解释了可以怎样优化网站中包含的Ajax、CSS、JavaScript、Flash和图片。每个规则都可以在本书的网站上找到对应的特别例子和代码片段。这些规則包括以下内容:减少HTTP连接请求、使用内容分发网络(ContentDeliveryNetwork)、在HTTP协议头添加过期时间、把部分内容变成Gzip格式、把样式表(stylesheets)放在顶部、将脚本放在底部、......一起来看看 《高性能网站》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具