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 # 移除指定的文件