課程一:操縱提交歷史

Lesson One: Navigating a Commit History
  • Discover what makes Git a great version control system for programmers.
  • Get practice using Git to view the history of an existing project.
  • See all the saved versions, checkout a previous version, and compare two different versions.

課程一主要介紹了 Git 環(huán)境的搭建和 Git 版本控制系統(tǒng)的一些操作。


Git 環(huán)境的搭建
  1. Git 的安裝

點擊鏈接俱萍,按照說明選擇 Windows 或 Mac 系統(tǒng)下載安裝姆涩,完成后在 Windows 中打開 Git Bash 或在 Mac 中打開 Terminal 輸入 git --version 來驗證安裝是否成功。

Git 的基礎知識
Git Bash 的默認路徑為系統(tǒng)當前用戶的文件夾志膀,如在 Windows 中 C:\Users\hsujin熙宇,在 Mac 中 /Users/hsujin,默認路徑下有 .bash_profile(Windows & Mac)或
.bashrc(Linux)溉浙、.bash_history烫止、.gitconfig 等文件。
這些文件通常是隱藏的戳稽,在 Mac 中打開 Finder 并轉到 Applications 頁面馆蠕,鍵入 Command+Shift+H 即可進入用戶主頁,鍵入Command+Shift+. 即可切換是否可見隱藏文件和文件夾惊奇。

  1. 設置從 Git Bash 或 Terminal 中啟動文本編輯器
  • 在 Windows 中設置從 Git Bash 中啟動 Notepad++

(1)在 Git Bash 輸入

git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

注意路徑用 / 分隔互躬,而不是 \ ,路徑中的空格和括號無需添加轉義字符 \ 颂郎。

(2)在 .bash_profile 中添加 Notepad++ 的快捷方式

alias notep="C:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe"

注意路徑用 / 分隔吨铸,而不是 \ ,路徑中的空格和括號需要添加轉義字符 \ 祖秒。

(3)重啟 Git Bash 后生效诞吱,輸入 notep .bash_profile 即可在 Notepad++ 中打開文件 .bash_profile

  • 在 Mac 中設置從 Terminal 中啟動 Sublime Text

(1)在 Terminal 中輸入

git config --global core.editor "'/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl' -n -w"

注意路徑用 / 分隔竭缝,而不是 \ 房维,路徑中的空格和括號無需添加轉義字符 \ 。

(2)在 .bash_profile 中添加 Sublime Text 的快捷方式

alias subl="/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl"

注意路徑用 / 分隔抬纸,而不是 \ 咙俩,路徑中的空格和括號需要添加轉義字符 \ 。

(3)重啟 Terminal 后生效湿故,輸入 subl .bash_profile 即可在 Sublime Text 中打開文件 .bash_profile阿趁。

  1. Git 的一些使用優(yōu)化

(1)更改顏色:可以在選項中更改 Git Bash 的背景色,文字顏色等坛猪。

在 Git Bash 輸入 git config --global color.ui auto 可以設置彩色的文字輸出脖阵,例如彩色的 diff 輸出。

(2)將課程提供的兩個文件放到默認路徑下墅茉,其中 git-completion.bash 提供了自動完成功能命黔,git-prompt.sh 提供了提示符中的 Git 功能。在 Git Bash 或 Terminal 輸入

cd ~
mv Downloads/git-completion.bash.txt git-completion.bash
mv Downloads/git-prompt.sh.txt git-prompt.sh

這里使用了 mv (移動)指令就斤,以及修改了文件的后綴悍募。

(3)將課程提供的 .bash_profile 文件內容加入到已有文件中,添加的內容為
a) 加載了剛剛加入的兩個文件功能洋机;
b) 添加了內容變化的星號(*)提示坠宴;
c) 定義了 Git Bash 的文字顏色(用戶名紫色、checkout內容及其他 git 內容綠色绷旗、目錄及 $ 藍色忧设、其他顏色默認)。

(4)在 Git Bash 或 Terminal 輸入課程提供的兩條指令颠通,在后續(xù)課程中會有用。

git config --global push.default upstream
git config --global merge.conflictstyle diff3`
Git 版本控制系統(tǒng)
Git 概念導圖

Part One
Git 是一種版本控制系統(tǒng)(VCS, Version Control System)膀懈,VCS 可以保存項目開發(fā)過程的所有版本顿锰,可用于還原先前版本,比較不同版本启搂;同時 VCS 還能使項目很方便與他人協(xié)作硼控;另外利用版本控制系統(tǒng),可以讓開發(fā)者更大膽地去探索和嘗試修改和改進項目胳赌,思考項目中更深層次的架構概念牢撼,而不用擔心毀掉整個項目。
Git 屬于 CVS(Concurrent Version System疑苫,并行版本系統(tǒng))的一種熏版,SVN (Subversion) 又是在 CVS 的基礎改進而成的。

Part Two
Commit 手動提交是 Git 的一個基本構件 (part-of) 捍掺,每個提交代表一個時間點的內容版本撼短,每次提交都需要提供提交信息,這樣就能通過在 Git Bash 或 Terminal 中輸入 git log (operates-on) 查看所有 commits 信息挺勿,包括 ID 曲横、作者、時間不瓶、提交信息禾嫉;輸入 git log --stat 可以查看所有 commits 的統(tǒng)計信息,包括一次提交修改的文件數(shù)量蚊丐、增加和刪除數(shù)量熙参。
另外,在 Git Bash 或 Terminal 中輸入 git diff old_commit_id new_commit_id (operates-on) 可以對比兩次提交之間的差異(在 Windows 自帶的 cmd 命令提示符 (Not Powershell) 中使用 FC (File Compare) 功能也能實現(xiàn)兩個文件的對比)麦备,這里要求文件使用短行(一般一行不超過 80~120 個字符)尊惰,否則只能顯示兩個文件不一樣,而不是顯示出詳細的差異泥兰。
log 和 diff 的退出鍵為 q 鍵弄屡。

Part Three
Repository 代碼庫是 Git 的文件集合概念 (part-of) ,通過 Repository 可以實現(xiàn)多文件提交 (Tracking Access Files) 鞋诗,通過 git clone 可以克隆整個 Repository 膀捷,實現(xiàn)所有歷史版本的代碼拷貝,通過 git checkout 可以讓 Repository 恢復之前的版本削彬,注意 Git 的 checkout 概念與 SVN 的不同全庸,執(zhí)行 git checkout 可以讓所有文件恢復到所選 commit 的狀態(tài) (Revert controls) 秀仲,用于 Debug 等。

本課學習到的五個 Git 指令

1.  git log
2.  git log --stat
3.  git diff old_commit_id new_commit_id
4.  git clone URL
5.  git checkout commit_id
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末壶笼,一起剝皮案震驚了整個濱河市神僵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌覆劈,老刑警劉巖保礼,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異责语,居然都是意外死亡炮障,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門坤候,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胁赢,“玉大人,你說我怎么就攤上這事白筹≈悄” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵徒河,是天一觀的道長吹害。 經(jīng)常有香客問我,道長虚青,這世上最難降的妖魔是什么它呀? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮棒厘,結果婚禮上纵穿,老公的妹妹穿的比我還像新娘。我一直安慰自己奢人,他們只是感情好谓媒,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著何乎,像睡著了一般句惯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上支救,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天抢野,我揣著相機與錄音,去河邊找鬼各墨。 笑死指孤,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播恃轩,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼结洼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了叉跛?” 一聲冷哼從身側響起松忍,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筷厘,沒想到半個月后鸣峭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡敞掘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了楣铁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玖雁。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖盖腕,靈堂內的尸體忽然破棺而出赫冬,到底是詐尸還是另有隱情,我是刑警寧澤溃列,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布劲厌,位于F島的核電站,受9級特大地震影響听隐,放射性物質發(fā)生泄漏补鼻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一雅任、第九天 我趴在偏房一處隱蔽的房頂上張望风范。 院中可真熱鬧,春花似錦沪么、人聲如沸硼婿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寇漫。三九已至,卻和暖如春殉摔,著一層夾襖步出監(jiān)牢的瞬間州胳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工逸月, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陋葡,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓彻采,卻偏偏與公主長得像腐缤,于是被迫代替她去往敵國和親捌归。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353