Git的基本命令

今天我们要说的Git的命令操作是基于本地Git仓库来进行,那么,到底什么是Git仓库呢?

Git仓库可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的新增、修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

创建Git仓库

创建一个Git仓库有以下两种常用方式:

  1. 通过$ git init命令将当前目录初始化为Git仓库
    在需要创建Git仓库的文件夹目录中,右键点击 Git Base Here,在命令窗口中输入以下命令:
$ git init
Initialized empty Git repository in D:/workspace/git workspace/HelloGit/.git/

该命令会在当前目录下创建一个名为 .git 的子目录(隐藏目录),这个子目录含有你初始化的Git仓库中所有的必须文件,就是Git的版本库。
如果你是在一个已经存在文件的文件夹(而不是空文件夹)中初始化Git仓库的话,文件并不会被跟踪,通过git add 命令来实现对指定文件的跟踪,然后执行git commit提交。

  1. 从一个远程服务器中克隆一个现有的 Git 仓库:
git clone https://github.com/test/test

该命令会在当前目录下创建一个名为“test”的目录,并在这个目录下初始化一个 .git 文件夹,从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。
进入到这个新建的“test”文件夹,会发现远程服务器中所有的项目文件都已经在里面了,并且都被git管理起来了,直接使用即可,无需执行add和commit命令。
如果想在克隆Git仓库的时候,自定义一个文件夹名称,可在命令后添加自定义文件夹名即可:

$ git clone https://github.com/test/test myTest

查看文件状态

我们现在当前目录下新建一个 hellogit.txt 文件,然后使用 git status 命令查看当前Git仓库的文件状态:

$ git status
On branch master

No commits yet

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

        hellogit.txt

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

例如,通过上面的命令可以看见,当前是处于Git的master分支,并且当前有一个 hellogit.txt 文件处于未跟踪状态。

将文件添加到git版本库

使用命令 git add 开始跟踪 hellogit.txt 文件,即把 hellogit.txt 文件加入到git版本库的暂存区,将此文件变为已跟踪

$ git add hellogit.txt

$ git status
On branch master

No commits yet

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

        new file:   hellogit.txt

执行以上命令,我们发现 hellogit.txt 已经从未跟踪状态变成了已改变待提交状态,这就说明 hellogit.txt 已经被git版本库跟踪。

此时我们编辑 hellogit.txt 文件,加入一行内容,再执行 git status 命令,看看会发生什么:

$ git status
On branch master

No commits yet

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

        new file:   hellogit.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   hellogit.txt

现在 hellogit.txt 文件同时出现在待提交(暂存区)和未提交更改的更改:(非暂存区),这怎么理解呢?
实际上 Git 只不过暂存了你运行 git add 命令时的版本,如果你现在提交,那么提交的版本是你最后一次运行 git add 命令时的那个版本。所以,运行了 git add 之后又修改了文件,需要重新运行 git add 把最新版本重新暂存起来。

$ git add hellogit.txt

$ git status
On branch master

No commits yet

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

        new file:   hellogit.txt

重新执行一次 git add 命令后,此时又变成了待提交状态。

对比已暂存和未暂存的修改

使用 git diff 命令,可以查看已暂存和未暂存的文件有什么修改:

$ git diff
diff --git a/hellogit.txt b/hellogit.txt
index 37bd1a0..899dd80 100644
--- a/hellogit.txt
+++ b/hellogit.txt
@@ -1,2 +1,3 @@
 hello git
-hello git2
\ No newline at end of file
+hello git2
+test diff
\ No newline at end of file

通过对比可以发现,hellogit.txt 文件中增加了 test diff 这一行字符

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。

将文件提交到git版本库

$ git commit -m 'commit test'
[master c9451a4] commit test
 1 file changed, 2 insertions(+), 1 deletion(-)

使用命令 git commit 可以把把暂存区的文件提交到git版本库; -m 后面输入的是本次提交的说明,可以输入任意内容,最好是有意义的,这样你就能从历史记录里方便地找到改动记录;

需要注意的是, git commit 只会提交当前已经执行过 git add 命令的相关改动到git版本库,所以,在执行 git commit 之前最好使用 git status 命令查看当前的文件状态,以确定是不是所有文件都已经提交到了暂存区。

跳过使用暂存区域

前面我们所有的命令中,在执行 git commit 之前,必须要先执行 git add 命令,将文件提交到暂存区,通过git commit –a –m "xxx" 命令,我们可以跳过 git add 命令,直接将文件提交到git版本库

首先我们编辑一下 hellogit.txt 文件,然后执行 git status 查看一下文件状态:

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   hellogit.txt

接下来我们不执行 git add 命令,直接执行 git commit -a -m 'test commit':

$ git commit -a -m 'test commit'
[master 75b2414] test commit
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 testcommit.txt

可以发现,使用这个命令的时候,哪怕不执行 git add 也是可以提交到git版本库的;

需要注意的是:git commit -a -m 'test commit' 命令只会把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤,但是对于没有被git跟踪过的文件,是不会被提交的,需要执行一次 git add 命令被git跟踪之后才可以使用这个命令直接提交。

感谢您的阅读,本文为作者归纳总结笔记,可能存在不当之处;
附上原文博客链接:Git的基本命令

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

推荐阅读更多精彩内容

  • Git常用命令 请确保已经安装里git客户端 一般配置 git --version//查看git的版本信息git ...
    闲云清烟阅读 268评论 0 0
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,421评论 0 7
  • 大纲: 一、前言 二、概述 三、在Windows上安装Git 四、创建本地仓库 五、本地仓库管理详解 六、总结 注...
    首席架构师阅读 364评论 1 3
  • Git 是一种版本管理工具,也可以叫备份管理工具。在进行编程时,要对代码进行备份或其他操作时,使用的一种工具。 首...
    孙小鑫的心阅读 399评论 0 9
  • Git的使用心得 由于公司对我的代码管理不严谨,所以荒废了好久的Git,一直就没怎么用,后面也多忘光了,所以再次重...
    IUVO阅读 296评论 0 1