? 这是我参与更文挑战的第7天,活动详情查看: 更文挑战
0x.00 前言
Git 是一个功能强大、复杂的分布式VCS(version control system)版本控制系统。Git 是针对开源项目的开发模式设计的,它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。它的出现改变了软件开发流程,大大地提高了开发流畅度。随着Git代码托管服务越来越流行(github、gitlab、gitee),Git 成为了当今主流源代码管理首选,很多公司、个人将项目上传至 Git平台进行代码托管。
Git优缺点如此明显,爱它的人爱死,恨它的人恨死。它功能强大毋庸置疑,但是它概念繁多复杂且命名随意、命令行语法命名随意且不一致、命令行帮助提示晦涩难懂、缺乏良好的封装等等缺点让人无力吐槽。
虽然一般情况下只需要掌握git的几个常用命令即可满足日常开发,但是在使用的过程中难免会遇到各种复杂的情况,不得不面对底层实现的,这时候经常需要搜索命令参数,非常麻烦,让初学者头大。
每次代码合并提交时都是心跳加速的时候!我的代码哪里去了呢? 咋没保存成功?!白忙活了! 怎么办还能找回吗? 返回的提示信息啥意思啊 我到底需要干什么啊?….
瑕不掩瑜,优秀的工具软件还是需要学习掌握的。通过接下来的Git常用命令学习,降低学习曲线,完成快速入门。
0x.01 环境安装
Git官网 提供了下载、文档和其他资源:
Windows
操作系统是 Windows,下载git for windows进行安装。
Mac
操作系统是 Mac OS , 使用 brew 命令来安装。git for MacOS
$ brew install git
复制代码
git –version 版本确认
使用 git --version 命令查看环境是否成功安装,返回版本信息。
$ git --version
git version 2.28.0
复制代码
0x.02 git config 配置
用户信息
安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改。
$ git config --global user.name "your name"
$ git config --global user.email "your_email@xxx.com"
复制代码
检查配置信息
使用 git config –list 命令来列出所有 Git 配置。
//查看所有配置项
$ git config -l , --list
...
user.name=Anduril
user.email=egger@outlook.com
...
复制代码
core.autocrlf
解决跨平台格式化不同导致的各种问题。Windows 使用回车(CR)和换行(LF)两个字符来结束一行,而 macOS 和 Linux 只使用换行(LF)一个字符,会极大地扰乱跨平台协作。
Unix/Mac用户
# 提交时转换为LF,检出时不转换
$ git config --global core.autocrlf input
# 提交包含混合换行符的文件时给出警告
$ git config --global core.safecrlf warn
复制代码
Windows 用户
# 提交时转换为LF,检出时转换CRLF
$ git config --global core.autocrlf true
# 提交包含混合换行符的文件时给出警告
$ git config --global core.safecrlf warn
复制代码
0x.03 创建项目
接下来从头开始创建 git 仓库(repository)。
创建目录/文件
创建一个名为helloworld的空目录,然后在该目录中创建一个包含以下内容的文件 helloworld.html。
$ mkdir helloworld
$ cd helloworld
// 新建 helloworld.html,内容如下
Hello, World!
复制代码
git init 初始化仓库
运行git init初始化仓库。

添加页面到仓库中并提交。
git add helloworld.html
git commit -m "首次提交"
复制代码

0x.04 git status 检查存储库的状态
运行 git status 检查存储库的当前状态。

0x.05 进行更改
更改helloworld.html页面内容。
<h1>Hello, World!</h1>
复制代码
使用 git status 检查工作目录的状态。

返回结果内容
helloworld.html文件已更改,但尚未提交到存储库 。- 提示下一步操作。提交
git add <file>或者撤销git restore <file>更改。
0x.06 暂存更改
暂存更改,然后检查状态
git add helloworld.html
git status
复制代码
helloworld.html 已暂存。 它在存储库中不是永久性的。 可以使用 git reset HEAD <file>... 取消暂存这些更改。
0x.07 暂存提交
分离暂存和提交,可以轻松自定义提交内容。暂存步骤允许您继续对工作目录进行更改,当您需要与版本控制交互时,可以在提交中记录更改。
假设您已编辑了三个文件。你可以一次提交所有更改,也可以分开单独提交。
git add a.html
git add b.html
git commit -m "a和b的更改"
git add c.html
git commit -m "c单独更改"
复制代码
0x.08 提交更改
提交到仓库中
git commit 增加 -m 标识可以提交描述信息。
直接输入git commit 默认编辑器会打开 COMMIT_EDITMSG 文件,输入提交信息,关闭文件后提交成功(如果空信息则终止提交).
编辑器打开顺序
- GIT_EDITOR environment variable
- core.editor configuration setting
- VISUAL environment variable
- EDITOR environment variable
0x.09 更改而不是文件
git处理更改,而不是文件。
大多数版本控制系统处理文件。您将文件添加到源代码控制中,系统将从那一刻起跟踪更改。
Git关注的是对文件的更改,而不是文件本身。git add file 命令并没有告诉git将文件添加到存储库中,而是记录文件的当前状态,以便稍后提交。
更改 helloworld.html 内容
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
复制代码
git add hello.html 暂存下更改。
再次修改 helloworld.html 内容
<html>
<head>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
复制代码
git status 查看当前状态
hello.html 在状态中列出了两次。第一个更改已经暂存并准备提交。第二个更改未暂存。如果您现在进行提交,则不会将头文件保存到存储库中
我们做下验证
git commit -m "添加HTML tags"
git status
复制代码
仍提示由更改尚未暂存。
# 将当前目录所有更改暂存最便捷方法。
git add .
# 检查状态 确保不会添加任何不应添加的文件
git status
复制代码
提交更改
git commit -m "添加 HTML header"
复制代码
0x.10 提交历史
git log
复制代码
不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。
参数 --pretty可以使用不同于默认格式的方式展示提交历史。 oneline 会将每个提交放在一行显示,在浏览大量的提交时非常有用。 另外还有 short,full 和 fuller 选项,它们展示信息的格式基本一致,但是详尽程度不一。
git log --pretty=oneline
复制代码
有许多选项参数可以控制日志展示结果
git log --pretty=oneline --max-count=2
git log --pretty=oneline --since='5 minutes ago'
git log --pretty=oneline --until='5 minutes ago'
git log --pretty=oneline --author=<your name>
git log --pretty=oneline --all
复制代码
控制输输出日志格式化
git log --all --pretty=format:"%h %cd %s (%an)" --since='7 days ago' --author=anduril
# 最合适的日志格式
git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
复制代码
git log --pretty=format 常用的选项
- %H 提交的完整哈希值
- %h 提交的简写哈希值
- %d 提交装饰(例如 (HEAD -> master))
- %T 树的完整哈希值
- %t 树的简写哈希值
- %P 父提交的完整哈希值
- %p 父提交的简写哈希值
- %an 作者名字
- %ae 作者的电子邮件地址
- %ad 作者修订日期(可以用 –date=选项 来定制格式)
- %ar 作者修订日期,按多久以前的方式显示
- %cn 提交者的名字
- %ce 提交者的电子邮件地址
- %cd 提交日期
- %cr 提交日期(距今多长时间)
- %s 提交说明
- –graph告诉 git 以 ASCII 图形布局的形式显示提交树
- –date=short 保持日期格式简短美观
? 本文到此就结束了!后续文章将会继续学习Git命令操作。























![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)