Git的相关了解以及使用
一、什么是git
1.版本控制是什么
版本控制是指对软件开发过程中各种程序代码、说明文档等文件的变更进行管理,它将追踪文件变化,记录文件的变更时间、变更内容、甚至变更执行人进行记录,同时对每一个阶段性变更(不仅仅只是一个文件的变化)添加版本编号,方便将来进行查阅特定阶段的变更信息,甚至是回滚。
人工版本控制器
通过人工的复制行为来保存项目的不同阶段的内容,添加适当的一些描述文字加以区分
- 繁琐、容易出错
- 产生大量重复(冗余)数据
版本控制工具
通过程序完成上述人工版本控制行为
- 方便且功能强大
- 只记录不同版本之间变化的部分
2.怎么工作的的
首先,我们得先了解两个重要概念
- 状态
- 区域
git 文件生命周期图示:
状态
同时,git 又提供了三种(也可以说是四种)不同的记录状态
- 已修改(modified)
- 已暂存(staged)
- 已提交(committed)
有一个特殊的状态
- 未追踪(Untracked)
区域
git 提供了三个不同的工作区,用来存放不同的内容
- 工作目录(Working Directory)
- 暂存区域(Staging Area)
- Git 仓库 (.git directory)
图示:
3.安装
注:根据官网傻瓜式安装https://git-scm.com/
4.配置
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改
git config user.name "你的姓名"
git config user.email "你的邮箱"
– global
通过 --global
选项可以设置全局配置信息
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"
检查配置
# 打印所有config
git config --list
# 打印指定config
git config user.name
全部都配置完成后效果(名字邮箱在最后两行输出)
5.创建仓库 - repository
进入希望纳入 git 版本控制的项目目录,使用 git init
初始化
git init
(1)新创一个文件夹后在目录cmd输入命令行后看图示:
(2)输入指令后在文件里按步骤点击就可以看到那个隐藏的git文件
该命令将创建一个名为 .git
的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面我们说的三个区域之一,这个目录也是 Git 保存数据记录的地方,非常重要,如非必要,不要轻易改动。
6.工作流与基本操作
当一个项目被 Git 初始化以后,只是表示我们希望通过 Git 来管理当前的这个项目文件的不同时期版本记录,但是这个时候项目中已存在的文件,或者以后新增的文件都是没有进入版本控制管理的,它们是 未追踪(Untracked)
的状态
6.1一些工作指令
(1)查看工作区的文件状态git status
效果展示:这些内容的意思就是:主分支在master上面,当前没有提交一个内容到
可以试着添加一些文件或者文本通过git add
指令
(2)添加工作区文件到暂存区git add
git add 1.txt
# 添加多个文件
git add 2.txt 3.txt
# 添加整个目录
git add ./a
# 添加多个目录
git add ./b ./c
# 添加所有文件
git add .
(2.1)如果直接输入git add
指令是这样的效果,找不到1.txt文本,所以我们应该再输一个指令创建一下文本或者文件内容,例如图示:
(2.2)输入这些命令行可以看到,没写的命令大家也可以试试
(3)创建版本git commit
将暂存区里的改动给提交到本地 git 仓库,也就是为这次工作(一般会把某个具有特定意义的工作作为一个版本,它可以是多个文件的变化)
注:为什么会有这种情况呢:主要是因为编辑器未打开,不要怕,输入这些指令就好了
按着esc,输入:wq按回车就好
(3.1)提交备注 每次提交都需要填写备注信息git commit -m 备注信息
(单行备注)
(4)查看提交日志
// 完整格式
git log
// 简要格式(单行)
git log --oneline
(4.1)图示:紧接上文,是不看不懂。
(4.2)没关系就是乱码啦,咱们稍微解决一下(终端乱码)
第一种:菜单 -> 设置 -> 文本 -> 本地 / 编码
或修改配置文件
第二种:需要这几行命令
进入windoes的cmd 然后分别输入以下五行
git config --global core.quotepath false
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
set LESSCHARSET=utf-8
(已改好)
(5)修改默认编辑器(这些me还没试,大家如果好奇或者有需求的话可以try一下)😊
git config core.editor notepad
# 添加 vscode 编辑器 - mac
# 通过 vim 打开环境变量配置文件
vim ~/.bash_profile
# 添加环境变量
export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH
# 保存退出
source ~/.bash_profile
# 测试:在终端中直接通过命令 code 调用 vscode
git config --global core.editor "code --wait"
(6)修复提交git commit --amend
修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中
git commit --amend -m 提交
注:切记要加-m否则打不开编辑器还要重复上面的esc退出那种在(3)注哪里
(7)删除
# 从 git 仓库与工作区中删除指定文件
git rm 文件
# 只删除 git 仓库中的文件
git rm --cached 文件
# rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区
git commit -m 修正
(8)撤销重置
(8.1) 从暂存区中撤销到工作区
// 从暂存区中撤销一个指定文件
git reset HEAD 文件名称
// 从暂存区中国年撤销所有文件
git reset HEAD .
(8.2) 该命令既可以用于回退版本
# 回退到指定的 commitID 版本
git reset --hard commitID
7.比较
# 比较 工作区和暂存区
git diff 文件
# 比较 暂存区和仓库
git diff --cached [commitId] 文件
# 比较 工作区和仓库
git diff commitId filename
# 比较 仓库不同版本
git diff commitId1 commitId2
8.分支
查看分支
git branch
创建分支
git branch 分支名称
切换分支
git checkout 分支名称
# 也可以使用 checkout -b 来新建分支
git checkout -b 分支名称
分支合并
# B 合并到 A,需要切换到 A 分支
git merge 被合并分支
# 查看已经合并的分支
git branch --merged
# 查看未合并的分支
git branch --no-merged
删除分支
# 如果分支为未合并状态,则不允许删除
git branch -d 分支名称
# 强制删除
git branch -D 分支名称
9.合并记录
rebase
# 合并 HEAD 前两个祖先记录
git rebase -i HEAD~2
10.标签
有的时候,我们希望给某一个特定的历史提交打上一些标签
1.新建 tag
git tag -a v1.0.0 HEAD/commitId
- 查看 tag
git tag
希望这篇博客可以帮到初学git的人,期待博主后期加更的git远程,提交同步gitee的文章吧