git实用知识梳理(一)最基础的知识

一般我们写代码会用到版本控制工具,那么git就是免费开源的工具之一,同时也是目前世界上最先进的分布式版本控制系统(没有之一)。因此,它的功能也是十分强大的了!当然了,精通git是很难的,大多数人也没有必要。

因此,本系列文就对常用的git知识进行梳理,保证实用!

这一篇主要内容如下:

  1. 创建版本库、添加文件到版本库、掌握仓库和文件状态
  2. 版本回退
  3. 工作区和暂存区、管理修改

Git超级实用命令

创建版本库 git init

新建一个空目录,并使用这个命令,就可以变成git可以管理的仓库,例如:

$ mkdir mygit
$ cd mygit
$ git init
Initialized empty Git repository in /Users/cynthia/mygit/.git/

建好了,然后.git目录是用来跟踪管理版本库的,不要手动修改就对了!

把文件添加到版本库 git add / git commit

假设我们新建了一个README.md文件在上面新建的mygit目录下。

$ git add README.md
$ git commit -m "readme file"

其中,git add是把文件添加到仓库,git commit则是把文件提交到仓库。 -m 后面的那段则是提交说明。

掌握仓库和文件状态 git status / git diff

git status 查看仓库当前的状态。比如你曾经添加了一些文件到仓库,但是不记得添加了哪些了,使用这个命令就可以很清楚的看到。

git diff 用git status发现有文件被修改过。但是你又不记得对文件进行了怎样的修改,就可以使用这个命令,查看区别。

$ git diff README.md

版本回退 git log / git reset / git relog

首先,使用git log查看最近提交了哪些版本。

$ git log
commit 08fea1512175c0033a03d3261499f64251ce19b1 (HEAD -> master)
Author: cynthia <xx@qq.com>
Date:   Thu Jan 17 12:24:54 2019 +0800

    修改说明文件

commit eec68512d9e5a0ac9e9c5f07a907db57a334cfa4 (origin/master, origin/HEAD)
Author: cynthia <xx@qq.com>
Date:   Mon Jan 14 12:06:52 2019 +0800

    增加说明文件

当然,如果你提交过很多次的话,一屏肯定显示不全,那就按空格或者回车,继续查看余下部分。如果想退出这个界面,直接按q键就好了。

如果觉得信息太多,还可以尝试加上--pretty=oneline参数,这样就会在一行显示一个提交,清爽了很多。

$ git log --pretty=oneline
08fea1512175c0033a03d3261499f64251ce19b1 (HEAD -> master) 修改说明文件
eec68512d9e5a0ac9e9c5f07a907db57a334cfa4 (origin/master, origin/HEAD) 增加说明文件

类似08fea1512...51ce19b1这样的一长串就是commit id(版本号)。

HEAD是当前版本,也就是当前的最新提交08fea1512...51ce19b1,上一个版本是HEAD,上上个版本是HEAD,往上100个版本则可以写成HEAD~100。

回退到上一个版本,使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at eec6851 增加说明文件

如果想指定回到某个版本怎么办呢?找到它的commit id,当然不需要复制整个一长串,复制前面几位就好了(也别太少,一两位的话可能会找到多个版本号,无法确定)。例如commit id是08fea15,使用命令:

$ git reset --hard 08fea15

那么当你回退到旧版本之后,还想恢复到新版本,此时用git log又查看不到版本号怎么办?此时就可以使用git reflog查看命令历史,进行找回。

$ git reflog
eec6851 (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to HEAD^
08fea15 HEAD@{1}: reset: moving to 08fea1512175c003
eec6851 (HEAD -> master, origin/master, origin/HEAD) HEAD@{2}: reset: moving to HEAD^

工作区和暂存区

刚学git的时候,我并不清楚有这个概念,所以经常很难理解一些操作。所以这次就带你来了解一下它们吧,可以更好地理解git哦!

工作区就是电脑里看到的目录啦。

另外,我们使用git init的时候有自动生成一个.git目录,这个是git的版本库,并不算是工作区。

版本库里存了很多东西,其中最重要的有stage和git自动创建的第一个分支master,以及指向master的指针HEAD.

stage就是暂存区。

当我们使用git add添加文件的时候,就是添加到暂存区。

使用git commit提交更改的时候,就是把暂存区的所有内容提交到当前分支。

当我们使用的时候,是不是会在git add好几次之后才会做一次git commit呀?此时,需要提交的文件,会通过git add放到暂存区,然后在git commit的时候,一次性提交暂存区的所有修改。

撤销修改 git checkout -- filename / git reset HEAD filename

正写着代码呢,小猫跑过来啪啪啪帮忙写了几爪子,然后顺手还帮你保存了。你很感激猫主子的“好意”,不过你还是想恢复到之前的模样。

怎么办呢?用眼睛一处处检查,然后改回来么?那万一整个文件都给你删了呢?

不用慌,此时使用git checkout -- filename撤销修改就好啦!之后,这个文件就会回到最近一次git commit或git add时的状态。

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

那么,万一你离开电脑的时候,小猫帮你写了一堆代码,你回来之后直接使用git add添加到了暂存区怎么办?

使用git reset HEAD filename就可以把暂存区的修改撤销掉,重新放回工作区
了!

假如你不仅add了,还commit了怎么办?参考上面版本回退部分的相关命令,就好了。

删除文件 git rm

git实用知识梳理(二)分支管理

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

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,866评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 3,911评论 0 11
  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,504评论 0 13
  • 爱他美(Aptamil)奶粉不仅是德国第一品牌的奶粉,也是欧洲销量最好的奶粉之一。它的受欢迎度主要来源于和其它品牌...
    西西的书屋阅读 428评论 1 0
  • 最近开始写作,但写了一段时间,写作的素材及灵感突然变的匮乏起来,于是就开始翻关于写作的书籍、课程,同时听了两个公众...
    时间的朋友_2d38阅读 246评论 0 2