序言:Git 是最常用的版本控制系统。Git 会跟踪我们对文件所做的更改,因此我们可以记录已完成的工作,并且可以在需要时恢复到特定或以前的版本。Git 还使多人协作变得更加容易,允许将多个人的更改全部合并到一个源中。
一、Git的安装与配置(Linux)
1.git的安装命令
sudo apt install git
2.查看git版本
git --version
如果返回git版本号,则表示git安装成功
3.git参数配置
配置用户名和邮箱
git config --global user.name ***
git config --global user.email ***@**.com
保存这些用户配置,避免下次重复输入登陆
git config --global credential.helper store
查看配置项命令如下,查看所有配置项:
git config --list
删除配置项命令如下:
git config --global --unset ***
二、git的创建与克隆
1.创建git仓库
在当前目录下创建一个git仓库
git init git_name
查看当前仓库的代码如下,如果有.git 文件夹表示创建成功
ls -a
2.克隆git仓库
在当前目录下创建一个git仓库
git clone https://github.com/**********.git
三、git暂存区
1.查看git状态
终端显示红色表示该文件未被跟踪的状态
git status
2.添加到暂存区和回退暂存区
将上面的未被跟踪文件添加到暂存区
git add ***(文件名)
将 .txt 结尾的文件添加到暂存区
git add *.txt
将当前目录的所有文件添加到暂存区中
git add .
将暂存区中的文件拿出到工作区变回未被跟踪状态
git rm --cached ***(文件名)
3.提交命令
将暂存区的内容提交到git仓库中, 不使用 -m会进入vim界面输入提交信息名称
git commit -m "提交到仓库1"
提交命令只能将暂存区的文件提交到仓库中,对于未被跟踪的工作区文件不能提交。
提交完成后可以用git log命令查看提交日志,显示提交ID、提交作者和邮箱、提交日期、时间、提交编写的注释信息(-m命令)
git log
四、版本控制
1.git reset版本回退的三种模式
git reset --soft **(回退版本ID) #工作区和暂存区的内容都不会被清空
git reset --hard **(回退版本ID) #工作区和暂存区的内容都会被清空
git reset --mixed **(回退版本ID) #工作区会被保留,暂存区的内容会被清空
谨慎使用 -hard,如果误操作了,可以使用下面代码做版本回溯
git reflog # 查看操作的历史记录
git reset --soft **(误操作之前,想回退的版本号)
2.查看版本及文档差异
(1).git diff默认比较工作区与暂存区之间的内容
git diff
上图中的红色表示删除内容,绿色表示增加内容。
(2).比较暂存区与版本库之间的差异
git diff --cached
(3).比较两个版本之间的差异
先试用命令查看版本记录,找到对应版本号
git reflog
查看版本之间的差异
git diff 版本号1 版本号2
查看当前版本和前n(1,2.3……)个版本的差别
git diff HEAD~n HEAD
查看当前版本前三个版本与先版本直接在file3.txt的差异
git diff HEAD~3 HEAD file3.txt
(4).比较两个分支之间的差异
3.删除文件
删除本地文件后查看暂存区状态,可以看到显示file1.txt为红色字体,表示暂存区需要与本地有不匹配,需要更新暂存区
rm file1.txt
git status
查看暂存区内容,并且用git add更新暂存区
git ls-files
git add file1.txt
上面是分两个步骤分布删除暂存区中的file1.txt,也可以使用下面代码一次删除工作区和暂存区的文件
git rm file1.txt
把文件从暂存区删除,但保留在当前工作区中
git rm --cached file1.txt
删除文件后记得提交到版本库中
git commit -m 删除file1
五、忽略版本更新
1.忽略文件
当需要忽略一些日志文件等无需更新文件时,需要使用忽略版本。
使用通配符将所有 .log结尾的文件计入忽略更新名单,不添加到版本库中
echo *.log > .gitignore # 将所有 .log结尾的文件放入.gitignore忽略名单
为什么有些log文件还是能被版本检测到呢?
.gitignore的前提是该文件不能被添加到版本库中。
2.忽略文件夹
使用vi命令编辑忽略名单
vi .gitignore # 编辑.gitignore
echo temp/ >> .gitignore # 追加文件夹名称到忽略名单
在忽略名单中键入文件夹名称加上“/”,一定要加斜杠,这样才能识别是文件夹。
六、分支
创建一个新的分支
git branch otherBranch # 新建一个名称为otherBranch的分支
git branch # 查看当前分支
切换到不同分支
git switch otherBranch
合并不同分支的文件
git merge otherBranch # 将otherBranch内容合并到当前分支中
展示分支图
git log --graph --oneline --decorate --all
删除分支
git branch -d otherBranch # 删除已经被合并的分支
git branch -D otherBranch # 强制删除分支
合并区别
git merge: 优点:不会破坏原分支的提交历史,方便回溯和查看
缺点:会产生额外的提交节点,分支图比较复杂
git rebase: 优点:不会新增额外的提交记录,形成线性历史,比较干净直观
会改变提交历史,改变了当前分支branch out的节点。避免在共享分支使用。