站长语:
此文从网络上整理而来,但是我感觉很多人对origin理解的不够深刻,而且原文对Remote/Origin Repository并没有做任何介绍,故补充了一篇内容,就是:Git的撤销(下)

一、首先我们要明白git的五个区,入下图:

git.jpeg

工作区(Working Area)
暂存区(Stage)
本地仓库(Local Repository)
远程仓库本地映射(Remote/Origin Repository)
远程仓库(Remote Repository)

上图可以简化为:

git-sample.png

正常情况下,我们的工作流就是3个步骤,对应上图中的3个箭头线:

git add .
git commit -m "comment"
git push

git add .把所有文件放入暂存区;
git commit把所有文件从暂存区提交进本地仓库;
git push把所有文件从本地仓库推送进远程仓库。

二、要明白五种状态。

以上4个区,进入每一个区成功之后会产生一个状态,再加上最初始的一个状态,一共是5种状态。以下我们把这5种状态分别命名为:

未修改(Origin)
已修改(Modified)
已暂存(Staged)
已提交(Committed)
已推送(Pushed)

三、检查修改
了解了基本概念之后,我们来谈一谈犯错误之后如何撤销的问题。首先,我们要了解如何检查上面三个步骤当中每一个步骤修改了什么,然后才好判断有没有修改成功。检查修改的二级命令都相同,都是diff,只是参数有所不同。
已修改,未暂存

3.1 git diff
首先,我们来看一下,如果我们只是简单地在浏览器里保存了一下文件,但是还没有做git add .之前,我们如何检查有哪些修改。我们先随便拿一个文件来做一下实验:

modify.png

我们在文件开头的第2行胡乱加了4个数字1234,存盘,这时文件进入了已修改状态,但是还没有进入暂存区,我们运行git diff,结果如下:

diff --git a/index.md b/index.md
index 73ff1ba..1066758 100644
--- a/index.md
+++ b/index.md
@@ -1,5 +1,5 @@
 ---
-layout: main
+1234layout: main
 color: black
 ---

git diff的结果告诉我们哪些文件已经做了哪些修改。

3.2 已暂存,未提交
git diff --cached
现在我们把修改放入暂存区看一下。先执行git add .,然后执行git diff,你会发现没有任何结果:

diff-add.png

这说明git diff这个命令只检查我们的工作区和暂存区之间的差异,如果我们想看到暂存区和本地仓库之间的差异,就需要加一个参数git diff --cached:

diff --git a/index.md b/index.md
index 73ff1ba..1066758 100644
--- a/index.md
+++ b/index.md
@@ -1,5 +1,5 @@
 ---
-layout: main
+1234layout: main
 color: black
 ---

这时候我们看到的差异是暂存区和本地仓库之间的差异。

3.3 已提交,未推送
git diff master origin/master
现在,我们把修改从暂存区提交到本地仓库,再看一下差异。先执行git commit,然后再执行git diff --cached,没有差异,执行git diff master origin/master,可以看到差异:

diff-commit.png

在这里,master就是你的本地仓库,而origin/master就是你的远程仓库,master是主分支的意思,因为我们都在主分支上工作,所以这里两边都是master,而origin就代表远程。

标签: none

《收徒公告》已经3人报名,还差2人,报名截止日期:2018年12月15日,请移步:>>>>>>

添加新评论