Git从放弃到入门(一)

? 这是我参与更文挑战的第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初始化仓库。
image.png

添加页面到仓库中并提交。

git add helloworld.html
git commit -m "首次提交"
复制代码

image.png

0x.04 git status 检查存储库的状态

运行 git status 检查存储库的当前状态。

image.png

0x.05 进行更改

更改helloworld.html页面内容。

<h1>Hello, World!</h1>
复制代码

使用 git status 检查工作目录的状态。

image.png

返回结果内容

  1. helloworld.html文件已更改,但尚未提交到存储库 。
  2. 提示下一步操作。提交 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命令操作。

0x.11 ? 参考

Pro Git Online

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享