前言:
教程來源于Udacity的免費(fèi)教程-用Git進(jìn)行版本控制置蜀,這里僅是個(gè)人的筆記,參考使用钦听。
需要學(xué)習(xí)的三個(gè)命令:
Git Init:使用Git在你的計(jì)算機(jī)上創(chuàng)建全新的倉(cāng)庫(kù)(repo).
Git clone:克隆一個(gè)已有的代碼倉(cāng)庫(kù)到本地計(jì)算機(jī)或是其它地方(repo).
Git status:查看代碼庫(kù)的狀態(tài).
所需的命令
注意椿争!我們將在這節(jié)課使用以下終端命令:
ls - 用來列出文件和目錄
mkdir - 用來新建目錄
cd - 用來更改目錄
rm - 用來刪除文件和目錄
如果你不知道如何使用它們,請(qǐng)參閱我們的 Linux 命令行基礎(chǔ) 課程缀棍!
我們還會(huì)涉及的一個(gè)概念是當(dāng)前目錄宅此,即你的 shell 正在查看的目錄。使用 cd 可以更改工作目錄爬范,使用 ls(單獨(dú)使用)會(huì)列出工作目錄下的文件父腕。如果你忘記 shell 的當(dāng)前工作目錄,可以使用 pwd 命令(表示 print working directory 輸出工作目錄)輸出該目錄的名稱青瀑。
*pwd-輸出當(dāng)前的工作目錄
*clear-清屏
創(chuàng)建代碼倉(cāng)庫(kù):
創(chuàng)建一個(gè)目錄璧亮,叫做udacity-git-course
在該目錄中,創(chuàng)建另一個(gè)目錄斥难,叫做 new-git-project
使用 cd 命令移到 new-git-project 目錄下
如果你和我一樣喜歡復(fù)制粘貼杜顺,則在終端上運(yùn)行以下命令:mkdir -p udacity-git-course/new-git-project && cd $_(在運(yùn)行此命令前,確保使用 cd 命令轉(zhuǎn)到你想將這些文件存儲(chǔ)到的位置蘸炸。例如躬络,如果你想將文件存儲(chǔ)到桌面上,則使用 cd 轉(zhuǎn)到桌面搭儒,然后再運(yùn)行該命令穷当。)
一切準(zhǔn)備好后,你的終端應(yīng)該位于 new-git-project 目錄中淹禾,并看起來如下所示:
git init
很棒馁菜!我們已經(jīng)準(zhǔn)備好,并且可以開始使用 git init 命令了铃岔!
這是最簡(jiǎn)單的命令之一汪疮。你只需在終端上運(yùn)行 git init。就這么多內(nèi)容毁习,立即試試吧智嚷!
該命令會(huì)在當(dāng)前目錄下初始化生成一個(gè)空的Git倉(cāng)庫(kù)。
git init 命令的作用
運(yùn)行 git init 命令會(huì)初始化 Git 跟蹤所有內(nèi)容會(huì)用到的所有必要文件和目錄纺且。所有這些文件都存儲(chǔ)在叫做 .git(注意開頭有個(gè) .盏道,表示在 Mac/Linux 上,它將是一個(gè)隱藏目錄)的目錄下载碌。這個(gè) .git 目錄是一個(gè)庫(kù)猜嘱!Git 會(huì)將所有 commit 記錄在這里衅枫,并跟蹤所有內(nèi)容!
我們來大致了解下 .git 目錄下的內(nèi)容朗伶。
警告:請(qǐng)勿直接修改 .git 目錄下的任何文件弦撩。這是倉(cāng)庫(kù)的核心。如果你更改了文件名或文件內(nèi)容论皆,Git 可能就無法跟蹤你保存在倉(cāng)庫(kù)中的文件孤钦,你可能會(huì)丟失很多內(nèi)容!可以查看這些文件纯丸,但是請(qǐng)勿編輯或刪除這些文件。
*類似于SVN里的.svn
description 文件 - 此文件僅用于 GitWeb 程序静袖,因此可以忽略
hooks 目錄 - 我們會(huì)在此處放置客戶端或服務(wù)器端腳本觉鼻,以便用來連接到 Git 的不同生命周期事件
info 目錄 - 包含全局排除文件
objects 目錄 - 此目錄將存儲(chǔ)我們提交的所有 commit
refs 目錄 - 此目錄存儲(chǔ)了指向 commit 的指針(通常是“分支”和“標(biāo)簽”)
深入研究
git init 小結(jié)
使用 git init 命令可以在當(dāng)前目錄下創(chuàng)建新的空倉(cāng)庫(kù)队橙。
$ git init
運(yùn)行此命令可以創(chuàng)建隱藏 .git 目錄坠陈。此 .git 目錄是倉(cāng)庫(kù)的核心/存儲(chǔ)中心。它存儲(chǔ)了所有的配置文件和目錄捐康,以及所有的 commit仇矾。
克隆現(xiàn)有倉(cāng)庫(kù)
至于為什么要克隆,你可以理解為重用解总,比如我新項(xiàng)目和原有的上一個(gè)項(xiàng)目在結(jié)構(gòu)組合配置上相似或是相同贮匕,一個(gè)一個(gè)的創(chuàng)建太機(jī)械低效,使用克隆可以直接copy出來到一個(gè)新的倉(cāng)庫(kù)中花枫。
在 Git 上進(jìn)行克隆的方法是調(diào)用我們將在終端上運(yùn)行的命令 git clone刻盐,然后傳入要克隆的 Git 倉(cāng)庫(kù)的路徑(通常是 URL)。
想要嘗試克隆一個(gè)現(xiàn)有的項(xiàng)目劳翰?我們來看看如何使用 Git 的 clone 命令敦锌!
克隆 blog 倉(cāng)庫(kù)
準(zhǔn)備好了?我們開始克隆吧佳簸!
輸入命令 git clone
乙墙,然后輸入你要克隆的 Git 倉(cāng)庫(kù)的路徑。我們將在這門課程中一直使用的項(xiàng)目位于以下 URL 上:https://github.com/udacity/course-git-blog-project 生均。因此听想,使用該 URL 克隆 Blog 項(xiàng)目的完整命令是:
git clone https://github.com/udacity/course-git-blog-project
(他這里是從github服務(wù)上clone代碼倉(cāng)庫(kù),也可以克隆剛才本地創(chuàng)建new-git-project,只需要寫詳細(xì)的路徑即可马胧。如:
)
驗(yàn)證終端位置
提示:在克隆任何內(nèi)容之前哗魂,確保命令行工具已定位于正確的目錄下±煅牛克隆項(xiàng)目會(huì)新建一個(gè)目錄录别,并將克隆的 Git 倉(cāng)庫(kù)放在其中朽色。問題是無法創(chuàng)建嵌套的 Git 倉(cāng)庫(kù)。因此组题,確保終端的當(dāng)前工作目錄沒有位于 Git 倉(cāng)庫(kù)中葫男。如果當(dāng)前工作目錄沒有在 shell 的提示符中顯示,輸入 pwd 輸出工作目錄崔列。
*你不能在一個(gè)Git倉(cāng)庫(kù)中再嵌套創(chuàng)建另外一個(gè)Git倉(cāng)庫(kù)(repo).
不要在當(dāng)前的Git倉(cāng)庫(kù)中進(jìn)行clone.
目前我本機(jī)還無法從github中clone代碼梢褐,一直失敗,解析不了github.com,嘗試了很多方法赵讯,無果盈咳,暫且用本地的倉(cāng)庫(kù)進(jìn)行試驗(yàn),稍后再去解決边翼!
默認(rèn)情況下鱼响,克隆出來的名字和原倉(cāng)庫(kù)的名字是相同的,如何使用不同的名稱组底?
只需要在命令后面丈积,加上新的項(xiàng)目名稱即可,如:
git clone udacity-git-course/new-git-project new-git-project2
注意:在clone倉(cāng)庫(kù)以后债鸡,我們要通過cd手動(dòng)切換到新的工作目錄下江滨!
cd new-git-project2
判斷倉(cāng)庫(kù)(repo)的狀態(tài)
git status 命令將顯示倉(cāng)庫(kù)的當(dāng)前狀態(tài)。
git status 是了解 Git 的核心所在厌均。它將告訴我們 Git 正在考慮什么唬滑,以及 Git 所看到的我們倉(cāng)庫(kù)的狀態(tài)。當(dāng)你第一次使用 Git 時(shí)棺弊,你應(yīng)該一直都要使用 git status 命令间雀!說真的,你應(yīng)該習(xí)慣于運(yùn)行任何其他命令之后镊屎,都運(yùn)行下該命令惹挟。這樣可以幫助你了解 Git 的工作原理,并避免你對(duì)文件 / 倉(cāng)庫(kù)狀態(tài)做出不正確的推論缝驳。
輸入:
git status
從輸出狀態(tài)可以清晰地看出沒有任何 commit连锯!