麻省理工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>

相關文章
相關標籤/搜索