《穿越时空的git》之创建版本库和常用命令操作

Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 强大的分支管理,远远超过 SVN。那 git 如何创建版本库?如何进行一些常用的操作呢?欲知答案如何,请看下文分解。

《穿越时空的git》之创建版本库和常用命令操作
《穿越时空的git》之创建版本库和常用命令操作

小时候看过一部印象很深的剧叫做《穿越时空的爱恋》,今日也厚着脸皮导演一部《穿越时空的git》,不上映,纯属自嗨!

what is 版本库?无论我们平常使用git的频率如何,但是从事IT这个行业的小伙伴一定经常听到有人在说,哪个哪个牛X的项目在哪个仓库,哪个项目的仓库被人恶意添加issue(之前就听说了阿波罗计划的代码仓库中issue被很多无关的中文评论占楼~哎,咱们测试工程师一定不要这样做,为这个行业尽一份力);

说了这么多废话,其实我们平常说的仓库就是版本库,版本库又名仓库,英文名叫repository,相信很多用GitHub的小伙伴经常看到这个单词;

我就简单的把它理解成一个目录文件夹,里面可以放各种文件,和平常的使用管理一样,可以删除、修改;但是Git的”文件夹“更强大一点,它记性好-Git可以"记住"整个管理的历史,还能”存档“。

注:所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。

如何创建一个版本库,很简单:

  • 1)选择一个路径(you like just ok!),创建一个空目录
《穿越时空的git》之创建版本库和常用命令操作

2)仓库地址创建好了,现在就是一个普通的文件夹,后使用git init命令将它变成”Git文件夹“,也就是把这个目录变成Git可以管理的仓库

《穿越时空的git》之创建版本库和常用命令操作

它会提示说在你的目录下创建了一个空的Git仓库,并且目录下多了一个.git,这个时候就算创建完成了。

《穿越时空的git》之创建版本库和常用命令操作

2.1 提交文件

在看命令之前先来用一张图了解几个概念,可以方便理解和记忆:

工作区(Working Directory)
临时仓库(暂存区,Staging Area)
Git仓库(Repository)

《穿越时空的git》之创建版本库和常用命令操作

我们就是先在工作区进行文件的编辑操作;然后add到临时仓库,可以add多个;最后再commit一起提交到仓库中。
接下来正式进入实操:

1)在mygit路径下,创建文件readme.txt,输入以下内容:

I want to study Git

《穿越时空的git》之创建版本库和常用命令操作

2)利用git add命令将文件提交到临时仓库(运行成功不会输出任何消息,看不到输出不要慌~)

《穿越时空的git》之创建版本库和常用命令操作

3)再用git commit命令将文件从暂存区提交到仓库去

《穿越时空的git》之创建版本库和常用命令操作

命令解释:

《穿越时空的git》之创建版本库和常用命令操作

2.2 找不同(diff)

1)我们先用git status查看当前仓库的状态

《穿越时空的git》之创建版本库和常用命令操作

现在表示在一个master分支上没有可提交的东西,工作目录当前是干净的

2)修改readme.txt文件:

《穿越时空的git》之创建版本库和常用命令操作
  • 3)再使用git status查看
《穿越时空的git》之创建版本库和常用命令操作

这时候可以看到文件已经被修改了,但是并没有被add和commit;

4)再使用git diff(different)命令来查看当前操作和之前的操作有何区别之处,修改了哪里:

《穿越时空的git》之创建版本库和常用命令操作

可以看到我在第二行增加了very much

2.3 回到过去(撤销回退)

1)我们先将刚才修改好的文件提交到仓库中:

《穿越时空的git》之创建版本库和常用命令操作

2)我们再使用git log命令来看看之前都干了些什么:

《穿越时空的git》之创建版本库和常用命令操作

在git log命令后,我们可以看到之前的提交commit历史,每一次提交都分配了唯一的commit id,这个id就是我们回到过去的关键,就相当与科幻电影中回到过去的某个时期

3.1)HEAD——现在,我如果想回到study git的”时期“,可以使用git reset --hard HEAD^

《穿越时空的git》之创建版本库和常用命令操作

这个时候我们可以看到,已经成功的回到了study git的”时期“,very much已经消失不见
命令解释:

<pre style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">如果回到过去不好理解的话,也可以理解为存档,本人小时候喜欢玩一款电脑游戏叫做红色警戒,
打任务战的时候每过一关前就会存档一次,这样就方便”死“了之后可以回到指定关卡重新再来
代表上一个存档,^代表上上个存档,如果想反会至上100个版本的话可以直接使用HEAD~100果回到过去</pre>

3.2)commit id——现在再修改文件,在第一行添加I can fly,然后add、commit:

《穿越时空的git》之创建版本库和常用命令操作

git log 查看修改提交日志

《穿越时空的git》之创建版本库和常用命令操作

上面说了可以利用commit id回到过去,现在咱们就来试试;使用git reset --hard 64f5ce...命令:

《穿越时空的git》之创建版本库和常用命令操作

从上面的结果可以看到,我们已经通过commit id成功回到了过去,回到了那个没有”I can fly“的年代;可以注意到的一点是,在写commit id的时候并没有写全,只是写了前面的一部分,git就可以找到了;

额。。。肯定有人要问具体是几位,说实话~我也不知道0.0,也没有专门去研究过,前四五位?六七位?七八位?达到使用要求就好啦,能保证id唯一,稍微多复制几个就可以了。。。

3.3)回到add前的年代——仅add文件到了暂存区,并没有commit;感觉好像是进入到了add的另一重空间,在未来也找不到他,那想回到原来的”时期“的话,就可以使用git reset HEAD 把file丢掉

现在我的readme.txt文件内容如下,并且已经add到了暂存区:

《穿越时空的git》之创建版本库和常用命令操作

使用git reset HEAD readme.txt命令将修改从add撤销回来

《穿越时空的git》之创建版本库和常用命令操作

3.4)这个时候又有个疑问,我只是把readme.txt从add后的暂存区给撤销回来了,文件并没有改变的;想要把文件的修改也撤回,就要使用git checkout -- 命令了:

《穿越时空的git》之创建版本库和常用命令操作

补充:一个文件已经被提交到了版本库,有时候我们在工作区误删了某个文件(rm或手动),这个时候版本库中还是有这个文件的,就可以通过git checkout -- 命令来”找回“;

如果真的想要从版本库中将文件删除,就要用到git rm和git commit命令了

2.4 返回未来

1)没错,一般穿越的电影里到最后总是会找到方法返回未来的,git也不例外,除了可以回到过去(版本回退),也可以返回未来(回到新版本);

这里我们还是要借助于commit id来做,但是回退后再用git log已经看不到未来时期的定位坐标了(commit id):

《穿越时空的git》之创建版本库和常用命令操作

2)这个时候就要用到git reflog命令了,记录你之前走过的路:

《穿越时空的git》之创建版本库和常用命令操作

在这里就可以看到之前I can fly 的commit id;这里顺便提一句,上面说了commit id不用写全部,写前面一部分,但是不确定具体写几位,这里看到git的log也只记录了前7位,那就姑且算7位吧。。。

有了commit id就等于获得了返回未来的坐标信息和方法,电影也差不多到了大结局的时候了,本文也就要结束了,来个收尾:

《穿越时空的git》之创建版本库和常用命令操作

(文章来源于霍格沃兹测试学院)

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

推荐阅读更多精彩内容

  • Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成...
    冬絮阅读 4,804评论 0 8
  • 查看、添加、提交、删除、找回,重置修改文件 git help # 显示command的help git sho...
    Swiftor阅读 2,103评论 0 2
  • 怀着殷切的希望,以为会有人来守护你。当生命中曾经是之物都弃你而去时。广阔的世界在也填填补补凉内心的空缺,我真爱难寻...
    千卷阅读 315评论 1 1
  • 吃过早饭骑车上街,经过新安街红绿灯口,被一对年轻夫妻迎面拦住:“大哥行行好,刚从广州回来,钱物被盗,请给顿饭钱。”...
    竹林溪月阅读 271评论 0 3
  • 请问哪里有卖时光胶囊 不是往回走 是向前飞的那种 我想看看未来的我 是个什么x样 请问葫芦娃在哪里 不是为了跟蛇精...
    不一样能怎样阅读 293评论 0 0