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)境的搭建
- 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+.
即可切換是否可見隱藏文件和文件夾惊奇。
- 設置從 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
阿趁。
- 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)
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