Git-实战篇-三个区域和交互-命令行

版权声明:本文为博主原创文章,未经博主允许不得转载;如有问题还请留言,随时沟通。 https://blog.csdn.net/MikeLC7/article/details/75267984

本实战篇对应的理论篇链接,本文将使用命令行(Git Bash)进行对理论篇的验证。

前言

本文操作交互部分的目录对应理论篇的目录,相关概念和示意图不再重复记录,如有需要请对应理论篇参考。

Git Bash

之前提到过Git的命令行(Git Bash)友好的命令提示和简洁明了的内容提示是一大亮点,
Git Bash 需要将命令行目录定位置工作区目录,可在工作区直接右击点击“Git Bash Here”或者进入Git Bash 之后手动定位目录。

git命令行秉承着“没有提示即执行成功”的原则,在我们执行命令之后如果没有任何反馈,默认为命令执行成功。

三个区域的交互

以下操作都是在本地的工作区和本地版本库中交互,示例通过编辑README.md文件实现。

.

本例中的.idea/和target/目录忽略不计。

基本交互

起始状态

这里写图片描述
git status
查看当前三个区域内文件的状态:当前无修改项
Untracked files:
是指没有被监听的文件,即无论文件是否修改,git不会进行提醒。

修改工作区文件

这里写图片描述
这里写图片描述

本次修改最终存储目标是到本地库中;

状态总览

这里写图片描述
On branch master
Your branch is ahead of ‘origin/master’by 1 commit.
:在当前分支master上,当前分支比远程版本库主分支(origin/master)领先一个操作;同时提示我们可以通过“git push”将本地的提交推送至远程库上。(本文主线是本地三个区域的交互,本文不在过多赘述远程库相关。)
Changes not staged for commit.
:目前可提交但是还未添加至暂存区的文件;
后续的命令提示提供了两个选择:
1、我们可以通过“git add ”相关命令将未暂存的文件添加至暂存区;
2、或者,使用“git checkout – ”将本文件的当前暂存区的内容覆盖到工作区上,丢弃掉文件在工作区内的修改;

查看差异

这里写图片描述
依次查看了工作区和暂存区,工作区和本地库分支以及暂存区和本地库分支的文件状态差异:
git diff:提示我们工作区相比暂存区添加了一行“this is for local repository”。
git diff HEAD:提示我们工作区相比本地库分支添加了一行“this is for local repository”。
git diff –cached:无差异。

此时README.md的修改状态仅仅存在于工作区,暂存区和本地版本库分支上仍保持这之前的文件状态;

添加暂存区

这里写图片描述
将工作区内的修改添加到了暂存区;

该文件在工作区和暂存区的状态应该一致,班底版本库分支中本文件仍然为最初状态;
下面来验证:

状态总览

这里写图片描述
branch相关同上;
Changes to be committed:
:已添加至暂存区可进行提交(commit)的文件修改;
后续的命令提示我们可以通过:
“git reset HEAD” 舍弃掉添加到暂存区内的修改;

查看差异

这里写图片描述
依次查看了工作区和暂存区,工作区和本地库分支以及暂存区和本地库分支的文件状态差异:
git diff:没有提示;即工作区和暂存区目前没有文件状态修改差异;
git diff HEAD:提示我们工作区相比本地库分支添加了一行“this is for local repository”;
git diff –cached:提示我们暂存区相比本地库分支添加了一行“this is for local repository”;

通过上述验证,在为文件的修改执行add,将修改添加至暂存区后,暂存区的文件状态会跟工作区保持一致;

提交至本地版本库

这里写图片描述
使用“git commit”提交修改;
“-m“命令参数为本次提交添加备注;

状态总览

这里写图片描述
git status
查看当前三个区域内文件的状态:当前无修改项;

查看差异

这里写图片描述
依次查看了工作区和暂存区,工作区和本地库分支以及暂存区和本地库分支的文件状态差异:
git diff:没有提示;即工作区和暂存区目前没有文件状态修改差异;
git diff HEAD:没有提示;即工作区和本地版本库分支区目前没有文件状态修改差异;
git diff –cached:没有提示;即暂存区和本地版本库分支区目前没有文件状态修改差异;

在进行连续的add和commit操作之后,工作区的内容修改依次被添加至暂存区,提交至本地版本库分支;此时三个区域的文件状态无差异;

三个区域皆不一致

修改README.md文件并添加至暂存区,然后再次修改工作区的README.md。

这里写图片描述
这里写图片描述

添加至暂存区后查看相关差异

这里写图片描述

再次修改工作区文件

这里写图片描述

上述操作模拟的是在同时进行工作区的修改和add以及commit时的情况;

状态总览

这里写图片描述

同时提示了
“Changes to be committed”:暂存区和本地版本库分支存在差异;
“Changes not staged for commit”:工作区和暂存区存在差异;
即当前状态下文件在工作区和暂存区以及本地版本库分支三个区域内的状态皆不相同;

查看差异

这里写图片描述
依次查看了工作区和暂存区,工作区和本地库分支以及暂存区和本地库分支的文件状态差异:
git diff:提示差异内容;
git diff HEAD:提示差异内容;
git diff –cached:提示差异内容;

验证checkout–

“check out – ”意将文件从暂存区域覆盖到工作区,用来丢弃本地修改。

继续来验证,接着使用上文的文件状态,此时如果执行“checkout –”,工作区内的修改应该会被丢弃,内容会被当前暂存区内的文件内容覆盖;

当前状态

这里写图片描述
这里写图片描述

执行命令

这里写图片描述

执行后状态

这里写图片描述

这里写图片描述

验证结果:此时工作区内的文件修改被暂存区覆盖,本地版本库分支无影响,验证通过;

验证reset

“git reset”意将暂存区内的内容丢弃,不影响工作区和本地版本库分支;

当前状态

这里写图片描述
这里写图片描述

执行命令

这里写图片描述

执行后状态

这里写图片描述

这里写图片描述

验证结果:没有影响工作区和本地版本库分支的内容;暂存区的内容与本地版本库分支内容一致,即恢复到最后一次提交(commit)时暂存区的状态;验证通过;

猜你喜欢

转载自blog.csdn.net/MikeLC7/article/details/75267984
今日推荐