Git&GitHub四、添加提交以及查看状态操作。版本穿梭测试的准备工作。查看历史记录的几种不同方式。

①具体的git版本控制操作。git status。

git专属的命令都是以git开始的。如:git status。git是主命令,status是子命令,后面还可以带一些参数。带参数的通常是-或者是--

执行:git status

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git status

On branch master

表示:我们现在是在master这个分支上,即主分支上。分支:虽然我们没有设置分支,但默认是有master这个分支的。master这个分支也叫主干。

No commits yet

在本地仓库里面,还没有任何的提交内容。这个commits是名词,表示已经提交的内容。没有已经提交的内容commits,即本地仓库里面还没有WeChat项目提交的内容。

nothing to commit (create/copy files and use "git add" to track)

这个commit是动词,表示在临时存储区即暂存区,没有什么可以去提交。

创建/复制 文件用git add 去追踪(track),即用git add命令将文件放入暂存区(临时存储区)。追踪(track)文件即表示用git去管理这个(些)文件。

②具体的git版本控制操作。创建文件、修改文件再看git status。

vim good.txt

内容为:

aaaaaaaaa

bbbbbbbbb

cccccccccc

按Esc键,再输入:wq,保存。

再用git status查看一下状态:

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git status


On branch master

在主干分支上。

No commits yet

在本地仓库WeChat项目还没有提交的内容。

Untracked files:    未被追踪的文件,good.txt是用红色标记了的。说明未被追踪的文件是不在暂存区(临时存储区)的。
  (use "git add <file>..." to include in what will be committed)  用git add 命令把未被追踪的文件放入暂存区(临时存储区),为该文件可以被提交(be committed)到本地库做准备。

        good.txt

nothing added to commit but untracked files present (use "git add" to track)
没有增加可以从暂存区(临时存储区)提交给本地仓库的文件,但是,在工作区present(出现了)没有被追踪的文件。可以用git add命令去追踪这个(些)文件。将工作区里面没有被追踪的文件增加到临时存储区(暂存区),使文件被追踪。

③具体的git版本控制操作。git add 文件名、再看git status。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git add good.txt
warning: LF will be replaced by CRLF in good.txt.
The file will have its original line endings in your working directory
警告:是对换行符的解释和转换,是系统底层的东西。这里忽略解释。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git status

On branch master

在主干分支上

No commits yet

WeChat项目在本地仓库没有提交的内容(commits)。

Changes to be committed:  
  (use "git rm --cached <file>..." to unstage)

        new file:   good.txt

说明暂存区(临时存储区)有内容了,可以有内容被提交。

用 git rm --cached 文件名可以将文件从暂存区(临时存储区)撤回。

这个在暂存区(临时存储区)的文件是:good.txt,用绿色标记了。

④具体的git版本控制操作。git rm --cached  文件名、再看git status。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git rm --cached good.txt
rm 'good.txt'
将good.txt文件从临时存储区(暂存区)撤回到工作区。在暂存区移除文件good.txt

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git status


On branch master

在主干分支

No commits yet

WeChat项目在本地仓库没有提交的内容

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        good.txt

nothing added to commit but untracked files present (use "git add" to track)
没有被追踪的文件good.txt

用git add 文件名 将文件放到暂存区(临时存储区),可以用来提交到本地仓库。

没有被追踪的文件即在工作区而不在暂存区(临时存储区)的文件出现(present)。

然后:ll

工作区中,文件good.txt还在,移除只是移除暂存区的内容。

重新执行:

git add good.txt

git status

⑤具体的git版本控制操作。git commit  文件名(从暂存区提交到本地库)、再看git status。

git commit good.txt

进入一下窗口:




# Please enter the commit message for your changes. Lines starting

对于你这次修改做出的改变,你需要在这里输入提交的信息。

那为什么要输入这个信息呢?这个信息相当于写代码的时候的注释,表示此次提交到本地仓库是什么意思,有什么功能,达到什么目的,想实现什么效果,加一个提交的message就非常明显了。记录一下,本次提交的目的。
# with '#' will be ignored, and an empty message aborts the commit.
#以#开头的内容会被忽略。如果是空的信息,提交将被终止。
# On branch master

在主干分支上
#
# Initial commit
#
# Changes to be committed:
#       new file:   good.txt
#
输入

:set nu,再回车,可以显示行号。

说明我们现在是在vim编辑器里面。

按I键,进入编辑(插入)模式。

写好以后按Esc键,再:wq,写入退出。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git commit good.txt
warning: LF will be replaced by CRLF in good.txt.
The file will have its original line endings in your working directory


[master (root-commit) 235edef] My first commit.new file good.txt

主干分支 第一次提交,即为根(root)提交, 235edef粗略的认为是这次提交所形成的版本号。


 1 file changed, 3 insertions(+)

一个文件被改变,三条信息被插入


 create mode 100644 good.txt
创建模式100644

git status查看一下。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git status
On branch master
nothing to commit, working tree clean

暂存区(临时存储区)没有内容可提交。工作树干净了。即工作区内容没有更改,暂存区内容已提交本地库。

即从工作区到暂存区到本地库,good.txt已完成。且good.txt还没有再更改。

⑥具体的git版本控制操作。更改文件,git add 文件名、git commit  文件名(从暂存区提交到本地库)、再看git status等操作。

更改文件good.txt,新增UUUUUUUUUU这一行。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git status
On branch master

在主干分支上


Changes not staged for commit

stage:存储、暂存

存在没有暂存(not staged)的修改(即这个修改还没有放入暂存区即临时存储区),这个修改可以用来提交。(暂存区即临时存储区提交到本地仓库即本地库)


  (use "git add <file>..." to update what will be committed)

因为good.txt有一份历史版本在暂存区,则这里是update,更新该历史版本。在暂存区没有good.txt历史版本的时候,提示的是:

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        good.txt

用的是untracked没有被追踪,和include(包含进)


  (use "git checkout -- <file>..." to discard changes in working directory)

这个命令在后面和另一个命令对照看。

modified:   good.txt

检测到文件是被修改了的(modified)

no changes added to commit (use "git add" and/or "git commit -a")

没有内容添加到暂存区,可以被提交。
可以先git add 文件夹,再git commit 文件夹

也可以git commit -a一步搞定,将文件加入暂存区再提交本地库。

这是修改的文件的提示。

新建时,即当工作区没有good.txt文件的时候,提示是:

nothing added to commit but untracked files present (use "git add" to track)
没有被追踪的文件good.txt

当暂存区没有good.txt文件时,只能先用git add 文件名,先追踪文件,将文件加入暂存区。再用git commit 文件名,提交到本地库。而当暂存区有good.txt文件历史版本后,可以git add 文件名,将文件加入暂存区,再git commit 文件名,提交到本地库,也可以一步操作:git commit -a文件名,但是当暂存区没有good.txt历史版本,则不能一步操作,git commit -a文件名。

在这里,我们一步步操作。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git status
On branch master

Changes to be committed:

这个修改改变以后,则可以将文件提交到本地库了。


  (use "git reset HEAD <file>..." to unstage)

这个命令,后面单独说。

        modified:   good.txt
 

⑦具体的git版本控制操作。git commit -m  "message"  文件名(从暂存区提交到本地库,不打开vim编辑器输入message信息)、再看git status等操作。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)


$ git commit -m "My second commit.modify good.txt" good.txt

不用进vim编辑器了,如果是git commit good.txt 就要进vim编辑器。


warning: LF will be replaced by CRLF in good.txt.
The file will have its original line endings in your working directory


[master 606c01a] My second commit.modify good.txt

主干分支上,粗略理解为提交到了版本号为: 606c01a

第一次提交,有root commit,根提交,这里不是第一次提交,所以没有了根提交。根提交只能有一个。


 1 file changed, 1 insertion(+)
 

⑧版本穿梭(版本的前进和后退)测试的准备工作。命令:git log。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git log
commit 606c01acf23171703bc024c6c2575a3727d3e078 (HEAD -> master)
Author: tom_pro <[email protected]>
Date:   Wed Jan 1 13:04:36 2020 +0800

    My second commit.modify good.txt

表示:这是一次提交(commit),值:606c01acf23171703bc024c6c2575a3727d3e078,是这个提交的索引,指向整个提交的信息。这个值:606c01acf23171703bc024c6c2575a3727d3e078实际上是一个哈希值。文件不变,文件无论哈希运算多少次,哈希后的值都不会变。文件有一点点改变,哈希运算后的哈希值就会改变。

HEAD是一个指针,说明当前的本地库指向哪一个版本。

作者(author): tom_pro <[email protected]>,这就是前面配置的签名。

Date是提交的时间。

My second commit.modify good.txt是当时提交的信息,-m后面加的字符串""或者是vim编辑器里面加入的信息(message)

commit 235edef61b71ae284b729a24f0c5f002eebfe607
Author: tom_pro <[email protected]>
Date:   Wed Jan 1 09:48:17 2020 +0800

    My first commit.new file good.txt
 

往good.txt里面多加一点内容:

再按照以上步骤多添加,添加到一页屏幕放不下。用空格键可以翻到下一页,用Q键可以退出。

自己添加以后,一页放不下,要四页:空格键翻下一页:

按Q键退出:键B向上翻页

⑨查看历史记录的几种不同方式。git log 后面可以附加参数。如:

git log --pretty=oneline、git log --oneline、git reflog、

git log --pretty=oneline

HEAD是指针,表示目前指针指向本地仓库的索引号是:5c1c61771ffe3f3bd9edfe65aaf579f64952f5d5的历史版本。 

git log --oneline,哈希值只显示一部分。

git reflog,这个查看日志的方式,对前进后退移动指针,非常有价值。

Administrator@ZFIZRPF39J6HN8I MINGW64 /d/gitworkspaces/WeChat (master)
$ git reflog
5c1c617 (HEAD -> master) HEAD@{0}: commit: insert rrrrrrrrr edit

表示指针到索引为部分哈希值5c1c617的历史版本,需要移动 HEAD@{0},0步。


d911c10 HEAD@{1}: commit: insert qqqqqqqqq edit

表示指针从当前位置(5c1c617)指向部分哈希值为d911c10的历史版本,需要移动HEAD@{1}:,1步。


b0ae86d HEAD@{2}: commit: insert ppppppppp edit

表示指针从当前位置(5c1c617)指向部分哈希值为b0ae86d的历史版本,需要移动HEAD@{2}:,2步。


0569ced HEAD@{3}: commit: insert ooooooooo edit

表示指针从当前位置(5c1c617)指向部分哈希值为0569ced的历史版本,需要移动HEAD@{3}:,3步。

以此类推:4步。。。。。。。。。16步,注意:是从当前位置,即部分哈希值是5c1c617的索引位置开始移动指针的话。
389751d HEAD@{4}: commit: insert nnnnnnnnn edit
fd96ea9 HEAD@{5}: commit: insert mmmmmmmmm edit
5540b38 HEAD@{6}: commit: insert lllllllll edit
cd0414d HEAD@{7}: commit: insert kkkkkkkkk edit
14e1663 HEAD@{8}: commit: insert jjjjjjjjj edit
213efcb HEAD@{9}: commit: insert iiiiiiiii edit
62fb747 HEAD@{10}: commit: insert hhhhhhhhh edit
3ddf910 HEAD@{11}: commit: insert ggggggggg edit
75c9a7b HEAD@{12}: commit: insert fffffffff edit
7499389 HEAD@{13}: commit: insert eeeeeeeee edit
0bea62a HEAD@{14}: commit: for test history
606c01a HEAD@{15}: commit: My second commit.modify good.txt
235edef HEAD@{16}: commit (initial): My first commit.new file good.txt

发布了122 篇原创文章 · 获赞 1 · 访问量 3557

猜你喜欢

转载自blog.csdn.net/lbh19630726/article/details/103781028