zoukankan      html  css  js  c++  java
  • 麻省理工18年春软件构造课程阅读05“版本控制”

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

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




    译者:李秋豪

    审校:

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


    译者注:我觉得网上的这篇教程Git教程 - 廖雪峰 更清楚详细的表达出了版本控制的缘由及对应操作,同时也非常简练,推荐大家看这个。所以这篇阅读资料只翻译了一个git show命令,完整的版本请参考05: Version Control


    ......(省略)


    为什么提交(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命令


    ......(省略)


  • 相关阅读:
    Linux命令之乐--nmap
    shell脚本学习总结09--分支与循环结构
    shell脚本学习总结08--比较与测试
    Linux命令之乐--test
    Linux命令之乐--read
    shell脚本学习总结06--数学计算
    Linux命令之乐--time
    Linux命令之乐--expr
    Linux命令之乐--seq
    Linux命令之乐--rename
  • 原文地址:https://www.cnblogs.com/liqiuhao/p/8563078.html
Copyright © 2011-2022 走看看