git-git命令解析、git config、文件区域管理

1、命令帮助

1.1、查看帮助

git help <子命令>

# 注意:不加"子命令"表示针对git,否则的话,就是查看具体子命令的帮助信息

1.2、命令简介

# git --help
用法:git [--version] [--help] [-C <路径>] [-c <名称>=<取值>] [--exec-path[=<路径>]]
          [--html-path] [--man-path] [--info-path] [-p | --paginate | -P | --nopager] 
          [--no-replace-objects] [--bare] [--git-dir=<路径>] [--work-tree=<路径>]
          [--namespace=<名称>] <命令> [<参数>]

这些是各种场合常见的 Git 命令:

开始一个工作区(参见:git help tutorial)
   clone     # 克隆一个仓库到一个新目录
   init      # 创建一个空的 Git 仓库或重新初始化一个已存在的仓库

在当前变更上工作(参见:git help everyday)
   add       # 添加文件内容至索引
   mv        # 移动或重命名一个文件、目录或符号链接
   reset     # 重置当前 HEAD 到指定状态
   rm        # 从工作区和索引中删除文件
   
检查历史和状态(参见:git help revisions)
   bisect    # 通过二分查找定位引入 bug 的提交
   grep      # 输出和模式匹配的行
   log       # 显示提交日志
   show      # 显示各种类型的对象
   status    # 显示工作区状态
   
扩展、标记和调校您的历史记录
   branch    # 列出、创建或删除分支
   checkout  # 切换分支或恢复工作区文件
   commit    # 记录变更到仓库
   diff      # 显示提交之间、提交和工作区之间等的差异
   merge     # 合并两个或更多开发历史
   rebase    # 在另一个分支上重新应用提交
   tag       # 创建、列出、删除或校验一个 GPG 签名的标签对象
   
协同(参见:git help workflows)
   fetch     # 从另外一个仓库下载对象和引用
   pull      # 获取并整合另外的仓库或一个本地分支
   push      # 更新远程引用和相关的对象
   
命令 'git help -a''git help -g' 显示可用的子命令和一些概念帮助。
查看 'git help <命令>''git help <概念>' 以获取给定子命令或概念的帮助。

2、环境初始化

2.1、目标

环境初始化的目的就是创建自己的版本控制代码仓库,而创建代码仓库主要有两种方式:
1、在本机工作目录下,通过导入代码文件来创建新的 Git 仓库。
2、从已有的 Git 仓库克隆出一个新的镜像仓库。

2.2、本地环境初始化

2.2.1、初始化

mkdir /data/git -p && cd /data/git
git init

注意:
init初始化后,在当前工作目录下会出现一个名为 .git 的目录,该目录有git即定的目录结构样式,所有 Git 需要的数据和资源都存放在这个目录中。
如果当前目录下有现成的代码文件的话,就相当于直接把所有代码都开始被git管理了。
root@localhost:/data/git# ll -a
drwxr-xr-x 3 root root 4096 Jun  9 10:04 ./
drwxr-xr-x 5 root root 4096 Jun  9 10:04 ../
drwxr-xr-x 7 root root 4096 Jun  9 10:04 .git/

2.2.2、目录结构解析

root@localhost:/data/git# tree .git/
.git/
├── HEAD             # 当前分支的标识符号,一般指向refs/heads目录下的分支文件
├── branches         # 代码分支
├── config           # git config 命令设置的配置信息
├── description      # 被gitweb(Github的原型)用来显示对仓库的描述
├── hooks            # 一些触发器规则的文件,俗称"钩子文件"
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── fsmonitor-watchman.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── pre-merge-commit.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   ├── pre-receive.sample
│   ├── prepare-commit-msg.sample
│   ├── push-to-checkout.sample
│   └── update.sample
├── info             # 一些特殊文件设置目录,比如忽略文件设置,.gitignore是互补的
│   └── exclude
├── objects          # 存放git对象,这是一个最核心的文件目录
│   ├── info
│   └── pack
└── refs             # 各个提交对象的标识(SHA-1)文件
    ├── heads        # 分支相关信息的目录
    └── tags         # 标签相关信息的目录

2.3、个人信息配置【git config】

2.3.1、配置与说明

个人主机git的环境基本环境准备好后,还需要使用git config命令配置一下代码仓库的用户环境(只需一
次),主要是设置一下当前主机上的git配置信息,以后升级时还会沿用下去。当然,可以用相同的命令修改它。

注意:git仓库必须配置 config 信息,不然的话,后期我们进行代码提交的时候,会提示报错,让我们先配置git仓库的基本信息。

git的配置文件主要有三个地方:
  1)、etc/gitconfig 当前系统中git全局配置。使用 git config 的 --system 编辑。
  2)、~/.gitconfig 当前主机上某用户配置。使用 git config 的 --global 编辑。
  3)、.git/config 某主机工作目录的git项目配置,优先级最高,会覆盖其他文件相同配置。
  注意:
    对于windows系统来说,该文件主要存在于
    $GIT_HOME D:\Program Files (x86)\Git\mingw64\etc
    $USER C:\Users\Administrator.PC-201704222111
    这两个目录下,每个人的具体目录稍有不同,但是格式一样。
    
用户环境的配置主要是两条:配置当前主机的git用户名称和邮件地址。
#####
git config --global user.name "2776680**@qq.com"
git config --global user.email 2776680**@qq.com
#####

注意:
  user.name "",不能写成 user.name="sswang"
  --global 参数,表示我们配置的信息针对于当前系统的用户,会保存到用户的家目录下。
  没有 --global 参数,表示配置针对当前工作目录,信息保存在当前目录的 .git/config 文件里。
  这两条配置很重要,每次 Git 提交时都会引用这两条信息,作为历史记录信息保存起来
  它还有另外两个config的配置参数:
    --system 针对系统所有用户的配置
    --local 这对本地仓库目录的,这是默认携带的参数
    这三者的优先级是:local > global > system  

root@localhost:~# cat /root/.gitconfig 
[user]
        name = 2776680**@qq.com
        email = 2776680**@qq.com

2.3.2、--system、--global、--local作用域

 

2.4、检查效果

2.4.1、检查所有配置信息

git config --list
# 注意:这里面的信息都是来自于 gitconfig 或者 config文件

2.4.2、检查指定范围的配置信息

git config --list --global
# 注意:--local 只能用于某个指定的git仓库中,非仓库的其他位置都会发生报错

2.4.3、检查用户信息

git config user.name
git config --local user.name

2.4.4、清除设置信息 

git config --unset --local|global|system user.name

3、区域管理

3.1、区域管理分类

区域管理,其实就是在使用git进行代码版本控制的过程中,实现文件数据移动/保存的几个位置。git的正常使用过程中,主要存在四个区域

3.1.1、 工作目录

工作目录 Working Directory /data/git(不包含.git)

3.1.2、 暂存区域

暂存区域 Staging Area /data/git/.git/index

3.1.3、 本地仓库

本地仓库 Repository-local /data/git/.git

3.1.4、 远程仓库

远程仓库 Repository-remote git://path/to/project.git

3.2、区域管理分类图

这四个区域在物理上存在两个地方:
当前主机:工作目录、暂存区域、本地仓库,这三个区域就是我们刚才初始化的 git目录。
远程主机:远程仓库即远程代码仓库

3.3、区域设置

git init的时候,会自动创建两个区域:工作目录/本地仓库。
git服务部署的时候,会设置远程仓库。

3.3.1、区域间文件示意图

# 版本查询
git reflog
git log

# 注意:本地仓库切回暂存区,需要有两次commit以上才可以生效

3.3.2、区域操作命令

git clone     # 从远程仓库获取文件到本机主机,包括所有配置信息
git pull      # 从远程仓库获取最新代码,并合并到本地仓库
git fetch     # 从远程仓库获取最新代码,不合并到本地仓库
git push      # 将本地仓库的代码推送到远程仓库
git add       # 将工作目录的文件添加到暂存区
git commit    # 将文件从暂存区移动到本地仓库
git reset     # 将文件从本地仓库移动文件到暂存区或者工作目录
git checkout  # 将文件从暂存区移动到工作目录
git rm        # 移除指定的文件

 

posted @ 2023-06-09 19:02  小粉优化大师  阅读(65)  评论(0编辑  收藏  举报