Git的基本操作

知识来源GitHub入门与实践

git init ——初始化仓库

msi@DESKTOP-RNI6GS3 MINGW64 /g
$ mkdir git-tutorial

msi@DESKTOP-RNI6GS3 MINGW64 /g
$ cd git-tutorial/

msi@DESKTOP-RNI6GS3 MINGW64 /g/git-tutorial
$ git init
Initialized empty Git repository in G:/git-tutorial/.git/

如果初始化成功,执行了git init 命令会生成.git目录。在Git中,我们将这个目录的内容称为“附属于该仓库的工作树”。文件的编辑等操作在工作树中进行,然后记录到仓库中,以此来管理文件的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照,在工作树种打开。

git status —— 查看仓库状态

msi@DESKTOP-RNI6GS3 MINGW64 /g/git-tutorial (master)
$ git status
On branch master

No commits yet

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

结果显示了当前正处于master分支下,还显示了当前没有可以提交的内容。

msi@DESKTOP-RNI6GS3 MINGW64 /g/git-tutorial (master)
$ touch README.md

msi@DESKTOP-RNI6GS3 MINGW64 /g/git-tutorial (master)
$ git status
On branch master

No commits yet

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

nothing added to commit but untracked files present (use "git add" to track)

在Untrack files 中显示了README.md文件。只要对Git的工作树或者仓库进行操作,git status就会进行变化。

git add —— 向暂存区中添加文件

如果只是用Git仓库的工作树创建了文件,那么该文件不会被记入Git仓库的版本管理对象中。所以,git status时会看到README.md会显示在Untracked files里。

想要文件成为Git仓库的管理对象,就需要用git add命令将其加入暂存区(Stage或Index)。暂存区是提交之前的临时区域。

msi@DESKTOP-RNI6GS3 MINGW64 /g/GitDirectory/git-tutorial (master)
$ git add README.md

msi@DESKTOP-RNI6GS3 MINGW64 /g/GitDirectory/git-tutorial (master)
$ git status
On branch master

No commits yet

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

git commit——保存仓库的历史记录

git commit 命令可以将当前暂存区的文件实际保存到仓库的历史记录中。通过这些记录,我们可以在工作树中复原这些文件。

  • 记述一行提交信息
msi@DESKTOP-RNI6GS3 MINGW64 /g/GitDirectory/git-tutorial (master)
$ git commit -m "first commit"
[master (root-commit) a2695ea] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README.md

-m参数后的"First commit" 称为提交信息,是对这个提交的概述。

  • 记述详细的提交信息

直接使用git commit 不用加 -m

git log ——查看提交日志

git log命令可以查看以往提交的的日志。

$ git log
commit 1ba27d6c696f5c1fe66c1b40df7397db9e55f83d (HEAD -> master)
Author: JiangCheng <zhou19970407@126.com>
Date:   Wed Jul 1 22:53:10 2020 +0800

    first commit

    try git commit

commit a2695eaa5d8af91565ef675937b4b27d3acef53a
Author: JiangCheng <zhou19970407@126.com>
Date:   Wed Jul 1 22:41:32 2020 +0800

    first commit

commit 旁边显示了显示的“1ba27d6c69.....”是指向这个提交的哈希值。Git的其他命令中,在指向提交时会用到这个哈希值。

Author 显示我们给Git设置的用户名和邮箱地址。Date栏显示的是提交执行的日期和时间。

最后就是提交的信息

  • 只显示提交信息的第一行

    可以在git log命令加上 --pretty=short。

  • 只显示指定目录、文件的日志

    git log 后面加上目录名或文件名

  • 显示文件的改动

    如果想查看文件提交带来的改动,可以加上 -p参数。

git diff ——查看更改前后的差别

git diff命令可以查看工作树、暂存区、最新提交之间的差别。

在刚刚提交的md文件里写点东西

  • 查看工作树和暂存区的差别

    执行git diff命令,查看当前工作树和暂存区的差别

    $ git diff
    diff --git a/README.md b/README.md
    index e69de29..b52d3b6 100644
    --- a/README.md
    +++ b/README.md
    @@ -0,0 +1,2 @@
    +# Git教程
    +
    

    由于我们尚未使用 git add命令向暂存区添加任何东西,所以程序只会显示工作树和最新提交状态之间的差别。

    "+"标出的是新添加的行,"-"标出的是被删除的行。

    用git add 将README.md加入暂存区。

    $ git add README.md
    
  • 查看工作树和最新提交的差别

    如果现在执行git diff命令,由于工作树和暂存区没有差别,结果什么都没有显示,要查看最新提交的差别,请执行以下命令。

    $ git diff head
    diff --git a/README.md b/README.md
    index e69de29..b52d3b6 100644
    --- a/README.md
    +++ b/README.md
    @@ -0,0 +1,2 @@
    +# Git教程
    +
    

    养成一个好习惯,在执行git commit 命令之前,先执行git commit HEAD命令查看本次提交的和上次提交的区别,确认之后再提交。这里的HEAD 是指向当前分支中最新一次提交的指针。

    运行 git commit

    $ git commit -m "Add index"
    [master 75816af] Add index
     1 file changed, 2 insertions(+)
    

    查看提交日志,确认是否提交成功。

    $ git log
    commit 75816af90c5a4e840330882f23a5e1d347f1b965 (HEAD -> master)
    Author: JiangCheng <zhou19970407@126.com>
    Date:   Thu Jul 2 23:20:25 2020 +0800
    
        Add index
    
    commit 1ba27d6c696f5c1fe66c1b40df7397db9e55f83d
    Author: JiangCheng <zhou19970407@126.com>
    Date:   Wed Jul 1 22:53:10 2020 +0800
    
        first commit
    
        try git commit
    
    commit a2695eaa5d8af91565ef675937b4b27d3acef53a
    Author: JiangCheng <zhou19970407@126.com>
    Date:   Wed Jul 1 22:41:32 2020 +0800
    
        first commit
    
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345