006
1. Git 基本概念
1.1 何为版本控制
版本控制系统是能够随着时间的推进记录一系列文件的变化, 以便于管理和控制文件的系统。
其分为三个大类:
本地版本控制系统 Local Version Control Systems
将文件的各个版本以一定的数据各式存储在本地磁盘中, 这种方式在一定程度上解决了需要手动复制和粘贴的问题, 但是无法解决多人协作的问题。
集中式版本控制系统 Centralized Version Control Systems
相比本地版本控制没有什么本质变化, 只是将负责数据存储的位置变为了中央服务器, 其优点是解决了本地版本控制系统无法多人协作的问题, 但是如果中央服务器 一旦宕机或者磁盘损坏, 那么会造成不可估量的损失。
分布式版本控制系统 Distributed Version Control System
与前两者不同, 分布式版本控制系统中, 系统保存的不是文件变化的差量, 而是文件快照, 即将文件的整体复制和保存, 因此用户每次拷贝的内容都是一个完整的版本, 包括历史记录、提交记录等, 避免了服务器宕机照成的数据数据丢失。
1.2 Git 文件结构
- 工作区:在电脑中可以看到的目录。
- 暂存区:stage或index,一般存放在.git目录下的index文件中。
- 版本库:在工作区中有一个隐藏目录.git,是Git的版本库。
2. 配置Git个人用户信息
通过以下指令,可以配置用户的名称和电子邮件地址
如果使用了--global
选项,则更改的配置文件为用户主目录下的,其它所有的项目均默认使用这个配置里的用户信息。若想单独为项目配置用户信息,则去除--global
选项即。
若想检查已有的用户配置信息,则可以使用如下指令
$ git config --list
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=E:/Software/Git/mingw64/etc/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
user.name=JRNitre
user.email=somebearcat@outlook.com
core.editor=vim
3. Git 创建仓库
3.1 初始化仓库
该命令执行后, 会在执行命令所在的文件夹内生成一个 .git
目录。若想使用指定的目录作为 Git 仓库, 则增加目标目录即可。
为目标文件夹目录
3.2 提交文件
使用 git add
命令向 Git 中提交文件。
git add
将命令所指定的文件添加到 Git 的暂存区中。
git commit
命令提交修改,通过-m
修饰可以附加修改记录。
3.3 拷贝项目
通过 git clone
命令即可从现有的 Git 仓库中拷贝项目。
<repo>
为指定需要 clone 的目录
<directory>
可以将需要克隆的仓库指定 clone 到对应的目录。
3.4 配置仓库
使用 git config
命令进入 vim 编辑器对仓库进行配置。
4. Git 基本命令
4.1 创建仓库
命令 | 说明 |
---|---|
git init |
初始化仓库 |
git clone |
拷贝一份远程仓库,下载一份项目 |
4.2 提交与修改
命令 | 说明 |
---|---|
git add |
添加文件到暂存区 |
git status |
查看仓库当前状态 |
git diff |
比较文件的不同:暂存区和工作区的差异 |
git commit |
提交暂存区到本地仓库 |
git reset |
回退版本 |
git rm |
将文件从暂存区和工作区中删除 |
git mv |
移动或者重命名工作区中的文件 |
git checkout |
分支切换 |
git switch |
更清晰的切换分支 |
git restore |
恢复或者撤销文件的修改 |
4.3 提交日志
命令 | 说明 |
---|---|
git log |
查看历史提交记录 |
git blame <file> |
以列表形式查看指定文件的历史修改记录 |
4.4 远程修改
命令 | 说明 |
---|---|
git remote |
远程仓库操作 |
git fetch |
从远程获取代码库 |
git pull |
下载远程代码合并 |
git push |
上传远程代码合并 |
5. Git 分支管理
5.1 创建分支
使用 git branch
命令创建一个分支。
<branch_name>
分支名
5.2 切换分支
使用 git checkout
命令切换到指定分支。
<branch_name>
需要切换的分支名
5.3 合并分支
使用 git merge
命令可以合并,统一分支。
将
<branch_name>
分支合并到当前所在分支。
6. 提交历史
通过 git log
命令可以查询提交的历史记录。
[branch_name/Hex]
需要查询的分支名。
[select]
修饰选项可以调整 log 命令的输出方式。
[select] 常用选项列表。
[select] | 说明 |
---|---|
-p |
显示提交补丁(具体更改内容) |
--oneline |
以简洁的一行格式提交显示信息 |
--graph |
以图形化的方式显示分支和合并历史 |
--decorate |
显示分支和标签指向的提交 |
--author=<作者> |
只显示特定作者的提交 |
--since=<时间> |
只显示指定时间之后的提交 |
--untl=<时间> |
只显示指定时间之前的提交 |
--grep=<模式> |
只显示包含指定模式的提交信息 |
--no-merges |
不显示合并提交 |
--stat |
显示简略统计信息,包括修改的文件和行数 |
--abbrev-commit |
使用短提交哈希值 |
--pretty=<格式> |
使用自定义的提交信息显示格式 |
7. Git 远程分支操作
7.1 从远程分支获取
git clone
命令可以从远程分支获取仓库。
<url>
远程仓库的 url, 例如https://github.com/user/template.git
即可将该云端存储库克隆到本地。
通过增加
-b
命令修饰,即可实现从远程仓库克隆指定分支<Target_branch>
7.2 从远程分支拉取
git pull
命令拉取远程分支到本地。
<remote_host>
远程主机名。
<remote_branch>
远程分支名。
<local_branch>
本地分支名。
7.3 推送本地分支到远程
git push
推送本地分支到远程。
<remote_host>
远程主机名。
<local_branch>
本地分支名。
<remote_branch>
远程分支名。