麻省理工18年春软件构造课程阅读05“版本控制”

<font size="3">html

本文内容来自MIT_6.031_sp18: Software Construction课程的Readings部分,采用CC BY-SA 4.0协议。linux

因为咱们学校(哈工大)大二软件构造课程的大部分素材取自此,也是推荐的阅读材料之一,因而打算作一些翻译工做,本身学习的同时也能帮到一些懒得看英文的朋友。另外,该课程的阅读资料中有许多练习题,可是没有标准答案,所给出的答案均为译者所写,有错误的地方还请指出。git

<br />web


<br />bash

译者:李秋豪学习

审校:spa

V1.0 Mon Mar 12 22:44:59 CST 2018.net

<br />翻译

译者注:我以为网上的这篇教程Git教程 - 廖雪峰 更清楚详细的表达出了版本控制的原因及对应操做,同时也很是简练,推荐你们看这个。因此这篇阅读资料只翻译了一个git show命令,完整的版本请参考05: Version Control版本控制

<br />

......(省略)

<br />

为何提交(commits)看起来像 diffs?

咱们以前将一次提交定义为对整个工程的一次快照,可是若是你问Git,它返回的结果好像不是这样:

$ git show 1255f4e
commit 1255f4e4a5836501c022deb337fda3f8800b02e4
Author: Max Goldman <maxg@mit.edu>
Date:   Mon Sep 14 14:58:40 2015 -0400

    Change the greeting

diff --git a/hello.txt b/hello.txt
index c1106ab..3462165 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Hello, version control!
+Hello again, version control!

Git以为咱们提交的项目中大多数内容是没变的,因而它只会显示出改变的内容。实际上,这也和Git的存储方式相同——它只会存储改变后的文件,每次提交中没变的文件都会指向以前提交中的文件:(还记得以前提到过的值不能改变的对象(immutable object)吗?)

可是咱们能够要求Git显示出指定提交中全部的文件:

$ git show 3e62e60:
tree 3e62e60:

hello.rb
hello.scm
hello.txt

看,仅仅一个分号就改变了整个输出。

咱们更能够指定一个特定提交中的特定文件的内容:

$ git show 3e62e60:hello.scm
(display "Hello, version control!")

这也是恢复文件的一种方法:使用 git show 显示出你上次提交的时候文件的内容。

译者注:diff命令的操做和阅读能够参考diff详解,读懂diff结果diff命令

<br />

......(省略)

<br />

</font>

相关文章
相关标签/搜索