Git 配置 & 原理 & 命令

本文总结自,B站-表严肃、B站-遇见狂神说:跟对人,做对事!

什么是Git

很多人会把Git和GitHub搞混淆。Git是一个版本控制的工具;GitHub是一个网站,只不过是基于Git的。

需要掌握一些基本的Linux命令哦!

1. 初始化配置

Git环境配置

该设置在github仓库主页显示谁提交了该文件

配置用户名和邮箱

# 配置用户名:随便打开一个自己的仓库,看`url`即可。
$ git config --global user.name "用户名"
# 配置邮箱
$ git config --global user.email "邮箱"  

检查配置是否成功

# 查看用户名
$ git config user.name
# 查看邮箱
$ git config user.email
# 或者直接展示用户配置
git config --global --list

查看配置文件

查看不同级别的配置文件,都在安装目录的etc文件夹内,本质是一个文件!

# 系统默认配置
git config --system --list 
# 用户配置
git config --global --list 
# 展示全部配置  
git config -l           

显示:

L@ILUIS MINGW64 /e/Personal/Desktop  // 系统配置文件
$ git config -l
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
credential.helper=manager     // 用户配置文件
user.name=il~~
user.email=lu~~~~.com
credential.helper=manager

2. 原理

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/lndex)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
Git 配置 & 原理 & 命令_第1张图片

  • Workspace:工作区,就是你平时存放项目代码的地方
  • Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

工作流程

  1. 在工作目录中添加、修改文件
  2. 将需要进行版本管理的文件放入暂存区域:git add.
  3. 将暂存区域的文件提交到git仓库。

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

3. 项目搭建

创建工作目录

两种方式:

  • 本地初始化:git init
  • 远程仓库克隆:git clone url

Git 配置 & 原理 & 命令_第2张图片

4. 基本命令

4.1 初始化

  • 初始化git项目
git init    
  • 创建一个名为test文件夹,并初始化为git仓库
git init test

4.2 查看仓库状态

以下列举几种状态提示:

  • no commit yet:没有提交记录(没有历史记录)。

  • Untracked files:文件没有被追踪。有文件更改,还未提交。是创建新文件时的状态

  • nothing to commit,working tree clean:所有的更改都被保存了。

  • Not a git repository:不是一个git项目,需要使用git init 进行初始化。

git status
  • 将文件添加到暂存区
git add 文件名.后缀   # 添加一个文件进行追踪

git add .(点)    # 添加当前目录下的所有文件
  • 提交到本地仓库
git commit -m "提交信息"   
  • 删除仓库
git rm 文件名.后缀

4.3 克隆仓库

  • 克隆仓库(克隆下来以后默认远程名称为origin,所以上传代码时指定远程名称要改成origin
git clone 仓库地址
  • 克隆仓库并更改存储文件夹名称
git clone 仓库地址 文件夹名

将本地仓库同步到git远程仓库中

git push

4.4 查看版本记录

  • 查看提交版本信息
git log

例如:

D:\git_code> git log
commit ed7b31c20570690d455262578a17acf076217dad (HEAD -> master)
Author: iluis 
Date:   Tue Apr 21 15:51:32 2020 +0800

    提交
D:\gti_code>
  • 查看具体更改(追加)信息
git log -p
  • 将信息展示到一行
git log --oneline
  • 展示所有信息
git log --all
  • 在一行展示所有信息
git log --all --oneline
  • 图示全部历史记录
git log --all --graph

4.5 回退到指定历史节点

  • 填写需要退回的commit序列号(7位即可)
git checkout xxx(7位即可)
  • 回退到之前的版本
git checkout -
  • 回退到指定标签
git checkout v1

4.6 标签:tag

  • 附注标签
git tag -a 标签名 -m "备注"
  • 列出所有标签
git tag
  • 在关键版本打标签
git tag -a v0.5 -m '重大更新' ed7b31c2057069
  • 查看某个标签的详细信息(谁使用了此标签)
git show 标签名

5. 分支命令

  • 查看所有本地分支
git branch 
  • 列出所有远程分支
git branch -r
  • 新建一个分支,但依然停留在当前分支
git branch 分支名
  • 切换分支
git checkout 分支名
  • 新建一个分支,并切换到该分支
git checkout -b 分支名
  • 合并指定分支到当前分支 (合并后要检查内容是否有冲突)
git merge 分支名
  • 删除分支
git branch -d [branch-name]
  • 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

Git 配置 & 原理 & 命令_第3张图片

6. 远程仓库

  • 添加远程仓库(远程名是自己定义的)
get remote add 远程名称 远程地址

例如:

 git remote add gitee https://gitee.com/iluis/test.git
  • 列出所有远程仓库
git remote

例如:

$ git remote
gitee
  • 列出所有远程仓库详细信息
git remote -v

例如:

$ git remote -v
gitee   https://gitee.com/iluis/test.git (fetch) //代码下载地址
gitee   https://gitee.com/iluis/test.git (push)  //代码上传地址
  • 上传代码
git push -u 远程名 分支名
  • 远程更新(拉取仓库中最新更新的代码)
git pull

其实它等于:

git fetch && git merge

Git 配置 & 原理 & 命令_第4张图片

7. 忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

在主目录下建立.gitignore文件,此文件有如下规则:

  1. 忽略文件中的空行或以井号#开始的行将会被忽路。
  2. 可以使用Linux通配符。例如:星号*代表任意多个字符,问号?代表一个字符,方括号[abc]代表可选字符范围,大括号{string1,string.2.}代表可选的字符串等。
  3. 如果名称的最前面有一个感叹号!,表示例外规则,将不被忽路。
  4. 如果名称的最前面是一个路径分隔符/,表示要忽略的文件在此目录下,而子目录中的文件不忽略。
  5. 如果名称的最后面是一个路径分隔符/,表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
# 注释
*.txt     # 忽路所有.txt结尿的文件
!1ib.txt  # 但1ib.txt除外
/temp     # 仅忽路项目根目录下的TOD0文件,不包括其它日录temp 
build/    # 忽塔build/目录下的所有文件
doc/*.txt # 会忽路 doc/notes.txt但不包括 doc/server/arch.txt

你可能感兴趣的:(Git)