文章目录
- 基本命令的使用
- 查看git的当前版本
- 初始化配置
- 设置用户名及邮箱
- 设置仓库的认证方式
- 查看当前配置
- 创建仓库
- 从远程服务器克隆仓库
- 创建本地仓库
- 添加和提交文件
- 工作区域和文件状态
- 工作区域
- 文件状态
- 查看文件状态及分支信息
- 查看暂存区的内容
- 添加文件
- 提交文件
- 查看提交日志
- 回退版本
- 撤销操作
- 差异比较
- 删除文件
- 分支相关操作
- 代码冲突
- 原因
- 解决方案
基本命令的使用
查看git的当前版本
git -v
初始化配置
–local: 配置对当前仓库有效
–global: 配置对当前用户(指的是当前用于登录系统的用户)的所有仓库有效
设置用户名及邮箱
git config --global user.name "xiao Ai"
git config --global user.email 12345678.@qq.com
注意:由于此处设置的用户名中间有空格所以要使用双引号,正常设置时无需使用双引号
设置仓库的认证方式
git config --global credentail.helper store
credentail.helper后的参数可选:
- cache: 在第一次输入认证凭据后会将其存储在缓存中,短期内不需要重复输入。
- store: 将凭据保存在.gitcredentail文件中。除非修改了git服务器上的密码,否则在第一次输入认证凭据后就再也不用输入。
查看当前配置
git config --global --list
创建仓库
从远程服务器克隆仓库
git clone https://github.com/xiaoAi1234/xue-cheng-plus #远程仓库的url地址
创建本地仓库
创建本地仓库前先要进入自己想要作为本地仓库的文件夹下,再使用git命令将该文件夹变成本地仓库。
git init
或者使用如下命令,从而在当前路径下新建一个名为test的文件夹并将其作为本地仓库。
git init test
添加和提交文件
在学习添加和提交文件前,我们需要先了解一下git的工作区域和文件状态。
工作区域和文件状态
工作区域
- 工作区:也叫本地工作目录,就是电脑中的文件夹。
- 暂存区:也叫索引,用于保存即将提交到git仓库的内容。
- 本地仓库:存储代码和版本信息。
文件状态
- 未跟踪:文件未被git管理 (文件在git status命令下提示为红色)
- 未修改:文件已被git管理但文件内容未发生变化
- 已修改:文件内容发生变化但还未添加到暂存区
- 已暂存:文件内容发生变化并添加到了暂存区内 (文件在git status命令下提示为绿色)
查看文件状态及分支信息
git status
该命令可查看工作区及暂存区中文件的状态,其中:
红色=》未跟踪文件
绿色=》已暂存文件
同时还会提示当前所处分支及相关信息
查看暂存区的内容
git ls-files
添加文件
将文件添加到暂存区,同时文件状态将变为已暂存。
git add 1.txt
添加文件时也可以使用通配符来批量添加文件,如下所示。
git add *.txt
添加当前目录下所有文件
git add .
如果想移除暂存区的文件可使用如下命令
git rm --cached 1.txt
提交文件
将暂存区的文件提交到仓库,-m后跟的是本次提交的相关信息。
git commit -m "第一次提交"
查看提交日志
使用如下命令会显示每次提交的提交者,邮箱,提交日期,相关信息及版本号
git log
想要查看更简洁的日志可使用如下命令。该命令仅显示每次提交的相关信息及版本号
git log --oneline
回退版本
git reset --soft 5af90b8 #要退回到的版本号,也可以为^HARD即退回到上一个版本。
reset后可接参数:
- soft: 回退版本,但不清空工作区和暂存区内容
- mixed: 回退版本,清空暂存区内容但不清空工作区内容
- hard: 回退版本,同时清空暂存区和工作区内容
soft与mixed的使用场景:
可对仓库进行多次回退,然后再一次性提交暂存区中的内容,从而实现将之前提交的多个版本合并成一个版本。
但这里如果是使用mixed在提交前需要先用“git add"命令将工作区内容添加到暂存区。
hard的使用场景:
确认真的需要回退到上一个版本并在后续基于上一个版本进行代码开发时。
撤销操作
可以先通过如下命令查看执行过的git操作,从而找到误操作之前的版本号
git reflog
用reset命令回到之前的版本号
git reset --hard 5af90b8
差异比较
比较工作区与暂存区的差异
git diff
比较工作区和版本库差异
git diff HEAD
比较暂存区和版本库差异
git diff --cached
比较版本库中两个版本的差异
#用法1
git diff 版本一ID 版本二ID
#用法2,此处HEAD指向最新版本
git diff 版本一ID HEAD
#用法3,此处HEAD指向最新版本,HEAD~指向上一个版本,HEAD~3则表示在HEAD前的三个版本
git diff HEAD~ HEAD
#用法4,指定比较特定文件的版本
git diff HEAD~ HEAD file.txt
执行差异比较的结果:
下图提示了file3.txt文件中的内容差异
红色为删除内容,绿色为添加的内容。
删除文件
# 操作1, 仅能将文件从工作区删除。使用git add后才能将信息同步到暂存区;使用git commit后才能将信息同步到版本库。
rm file.txt
# 操作2, 将文件从工作区和暂存区删除。使用git commit后才能将信息同步到版本库。
git rm file.txt
分支相关操作
# 查看当前仓库的所有分支
git branch
# 新建分支
git branch hhh
# 切换到不同分支。但由于checkout也有恢复文件的作用,所以当分支名与文件名相同时会产生歧义,默认为切换分支
git checkout h1
# git在2.23版本后专门切换分支的命令
git switch h1
# 若当前分支为h2,则会将分支h1合并到h2中。注意:虽然分支被合并但它仍然存在于仓库中
git merge h1
# 查看分支图
git log --graph --oneline --decorate --all
# 删除已合并分支
git branch -d h1
# 强制删除分支,不管该分支是否合并
git branch -D h2
代码冲突
原因
两个分支修改了同一行代码
解决方案
#1.查看发生冲突的文件
git status
#2.查看冲突的具体内容
git diff
#3.退出冲突查看页面
进入末行模式后,输入wq
#4.对冲突文件进行修改
cat 1.txt
#5.提交合并后的文件
git add .
git commit -m "merge"
ps: 在提交前也可选择中断本次合并
git merge --abort