歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> 學習Linux

建立你的第一個 Git 倉庫

建立你的第一個 Git 倉庫


建立你的第一個 Git 倉庫


建立你的第一個 Git 倉庫建立你的第一個 Git 倉庫

雖然 Git 確實是被許多重要軟件選作版本控制工具,但是並不是僅能用於這些重要軟件;它也能管理你購物清單(如果它們對你來說很重要的話,當然可以了!)、你的配置文件、周報或日記、項目進展日志、甚至源代碼!

使用 Git 是很有必要的,畢竟,你肯定有過因為一個備份文件不能夠辨認出版本信息而抓狂的時候。

Git 無法幫助你,除非你開始使用它,而現在就是開始學習和使用它的最好時機。或者,用 Git 的話來說,“沒有其他的 push 能像 origin HEAD 一樣有幫助了”(千裡之行始於足下的意思)。我保證,你很快就會理解這一點的。

類比於錄音

我們經常用名詞“快照”來指代計算機上的鏡像,因為很多人都能夠對插滿了不同時光的照片的相冊充滿了感受。這很有用,不過,我認為 Git 更像是進行一場錄音。

也許你不太熟悉傳統的錄音棚卡座式錄音機,它包括幾個部件:一個可以正轉或反轉的轉軸、保存聲音波形的磁帶,可以通過拾音頭在磁帶上記錄聲音波形,或者檢測到磁帶上的聲音波形並播放給聽眾。

除了往前播放磁帶,你也可以把磁帶倒回到之前的部分,或快進跳過後面的部分。

想象一下上世紀 70 年代樂隊錄制磁帶的情形。你可以想象到他們一遍遍地練習歌曲,直到所有部分都非常完美,然後記錄到音軌上。起初,你會錄下鼓聲,然後是低音,再然後是吉他聲,最後是主唱。每次你錄音時,錄音棚工作人員都會把磁帶倒帶,然後進入循環模式,這樣它就會播放你之前錄制的部分。比如說如果你正在錄制低音,你就會在背景音樂裡聽到鼓聲,就像你自己在擊鼓一樣,然後吉他手在錄制時會聽到鼓聲、低音(和牛鈴聲)等等。在每個循環中,你都會錄制一部分,在接下來的循環中,工作人員就會按下錄音按鈕將其合並記錄到磁帶中。

你也可以拷貝或換下整個磁帶,如果你要對你的作品重新混音的話。

現在我希望對於上述的上世紀 70 年代的錄音工作的描述足夠生動,這樣我們就可以把 Git 的工作想象成一個錄音工作了。

新建一個 Git 倉庫

首先得為我們的虛擬的錄音機買一些磁帶。用 Git 的話說,這些磁帶就是倉庫;它是完成所有工作的基礎,也就是說這裡是存放 Git 文件的地方(即 Git 工作區)。

任何目錄都可以成為一個 Git 倉庫,但是讓我們從一個新目錄開始。這需要下面三個命令:

創建目錄(如果你喜歡的話,你可以在你的圖形化的文件管理器裡面完成。)
在終端裡切換到目錄。
將其初始化成一個 Git 管理的目錄。

也就是運行如下代碼:

$mkdir~/jupiter#創建目錄$cd~/jupiter#進入目錄$gitinit.#初始化你的新Git工作區

在這個例子中,文件夾 jupiter 是一個空的但是合法的 Git 倉庫。

有了倉庫接下來的事情就可以按部就班進行了。你可以克隆該倉庫,你可以在一個歷史點前後來回穿梭(前提是你有一個歷史點),創建交替的時間線,以及做 Git 能做的其它任何事情。

在 Git 倉庫裡面工作和在任何目錄裡面工作都是一樣的,可以在倉庫中新建文件、復制文件、保存文件。你可以像平常一樣做各種事情;Git 並不復雜,除非你把它想復雜了。

在本地的 Git 倉庫中,一個文件可以有以下這三種狀態:

未跟蹤文件Untracked:你在倉庫裡新建了一個文件,但是你沒有把文件加入到 Git 的管理之中。
已跟蹤文件Tracked:已經加入到 Git 管理的文件。
暫存區文件Staged:被修改了的已跟蹤文件,並加入到 Git 的提交隊列中。

任何你新加入到 Git 倉庫中的文件都是未跟蹤文件。這些文件保存在你的電腦硬盤上,但是你沒有告訴 Git 這是需要管理的文件,用我們的錄音機來類比,就是錄音機還沒打開;樂隊就開始在錄音棚裡忙碌了,但是錄音機並沒有准備錄音。

不用擔心,Git 會在出現這種情況時告訴你:

$echo"helloworld">foo$gitstatusOnbranchmasterUntrackedfiles:(use"gitadd<file>..."toincludeinwhatwillbecommitted)foonothingaddedbutuntrackedfilespresent(use"gitadd"totrack)

你看到了,Git 會提醒你怎樣把文件加入到提交任務中。

不使用 Git 命令進行 Git 操作

在 GitHub 或 GitLab 上創建一個倉庫只需要用鼠標點幾下即可。這並不難,你單擊“New Repository”這個按鈕然後跟著提示做就可以了。

在倉庫中包括一個“README”文件是一個好習慣,這樣人們在浏覽你的倉庫的時候就可以知道你的倉庫是干什麼的,更有用的是可以讓你在克隆一個有東西的倉庫前知道它有些什麼。

克隆倉庫通常很簡單,但是在 GitHub 上獲取倉庫改動權限就稍微復雜一些,為了通過 GitHub 驗證你必須有一個 SSH 密鑰。如果你使用 Linux 系統,可以通過下面的命令生成:

$ssh-keygen

然後復制你的新密鑰的內容,它是純文本文件,你可以使用一個文本編輯器打開它,也可以使用如下 cat 命令查看:

$cat~/.ssh/id_rsa.pub

現在把你的密鑰粘貼到 GitHub SSH 配置文件 中,或者 GitLab 配置文件。

如果你通過使用 SSH 模式克隆了你的項目,你就可以將修改寫回到你的倉庫了。

另外,如果你的系統上沒有安裝 Git 的話也可以使用 GitHub 的文件上傳接口來添加文件。

建立你的第一個 Git 倉庫建立你的第一個 Git 倉庫

跟蹤文件

正如命令 git status 的輸出告訴你的那樣,如果你想讓 git 跟蹤一個文件,你必須使用命令 git add 把它加入到提交任務中。這個命令把文件存在了暫存區,這裡存放的都是等待提交的文件,或者也可以用在快照中。在將文件包括到快照中,和添加要 Git 管理的新的或臨時文件時,git add 命令的目的是不同的,不過至少現在,你不用為它們之間的不同之處而費神。

類比錄音機,這個動作就像打開錄音機開始准備錄音一樣。你可以想象為對已經在錄音的錄音機按下暫停按鈕,或者倒回開頭等著記錄下個音軌。

當你把文件添加到 Git 管理中,它會標識其為已跟蹤文件:

$gitaddfoo$gitstatusOnbranchmasterChangestobecommitted:(use"gitresetHEAD<file>..."tounstage)newfile:foo

加入文件到提交任務中並不是“准備錄音”。這僅僅是將該文件置於准備錄音的狀態。在你添加文件後,你仍然可以修改該文件;它只是被標記為已跟蹤和處於暫存區,所以在它被寫到“磁帶”前你可以將它撤出或修改它(當然你也可以再次將它加入來做些修改)。但是請注意:你還沒有在磁帶中記錄該文件,所以如果弄壞了一個之前還是好的文件,你是沒有辦法恢復的,因為你沒有在“磁帶”中記下那個文件還是好著的時刻。

如果你最後決定不把文件記錄到 Git 歷史列表中,那麼你可以撤銷提交任務,在 Git 中是這樣做的:

$gitresetHEADfoo

這實際上就是解除了錄音機的准備錄音狀態,你只是在錄音棚中轉了一圈而已。

大型提交

有時候,你想要提交一些內容到倉庫;我們以錄音機類比,這就好比按下錄音鍵然後記錄到磁帶中一樣。

在一個項目所經歷的不同階段中,你會按下這個“記錄鍵”無數次。比如,如果你嘗試了一個新的 Python 工具包並且最終實現了窗口呈現功能,然後你肯定要進行提交,以便你在實驗新的顯示選項時搞砸了可以回退到這個階段。但是如果你在 Inkscape 中畫了一些圖形草樣,在提交前你可能需要等到已經有了一些要開發的內容。盡管你可能提交了很多次,但是 Git 並不會浪費很多,也不會占用太多磁盤空間,所以在我看來,提交的越多越好。

建立你的第一個 Git 倉庫建立你的第一個 Git 倉庫

commit 命令會“記錄”倉庫中所有的暫存區文件。Git 只“記錄”已跟蹤的文件,即,在過去某個時間點你使用 git add 命令加入到暫存區的所有文件,以及從上次提交後被改動的文件。如果之前沒有過提交,那麼所有跟蹤的文件都包含在這次提交中,以 Git 的角度來看,這是一次非常重要的修改,因為它們從沒放到倉庫中變成了放進去。

完成一次提交需要運行下面的命令:

$gitcommit-m'Mygreatproject,firstcommit.'

這就保存了所有提交的文件,之後可以用於其它操作(或者,用英國電視劇《神秘博士》中時間領主所講的 Gallifreyan 語說,它們成為了“固定的時間點” )。這不僅是一個提交事件,也是一個你在 Git 日志中找到該提交的引用指針:

$gitlog--oneline
55df4c2Mygreatproject,firstcommit.

如果想浏覽更多信息,只需要使用不帶 --oneline 選項的 git log 命令。

在這個例子中提交時的引用號碼是 55df4c2。它被叫做“提交哈希commit hash”(LCTT 譯注:這是一個 SHA-1 算法生成的哈希碼,用於表示一個 git 提交對象),它代表著剛才你的提交所包含的所有新改動,覆蓋到了先前的記錄上。如果你想要“倒回”到你的提交歷史點上,就可以用這個哈希作為依據。

你可以把這個哈希想象成一個聲音磁帶上的 SMPTE 時間碼,或者再形象一點,這就是好比一個黑膠唱片上兩首不同的歌之間的空隙,或是一個 CD 上的音軌編號。

當你改動了文件之後並且把它們加入到提交任務中,最終完成提交,這就會生成新的提交哈希,它們每一個所標示的歷史點都代表著你的產品不同的版本。

這就是 Charlie Brown 這樣的音樂家們為什麼用 Git 作為版本控制系統的原因。

在接下來的文章中,我們將會討論關於 Git HEAD 的各個方面,我們會真正地向你揭示時間旅行的秘密。不用擔心,你只需要繼續讀下去就行了(或許你已經在讀了?)。

原文來自:http://os.51cto.com/art/201608/515601.htm

轉載地址:http://www.linuxprobe.com/first-git-warehouse.html


http://xxxxxx/Linuxjc/1155947.html TechArticle

Copyright © Linux教程網 All Rights Reserved