課程一:操縱提交歷史

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 的安裝

點(diǎn)擊鏈接,按照說(shuō)明選擇 Windows 或 Mac 系統(tǒng)下載安裝,完成后在 Windows 中打開(kāi) Git Bash 或在 Mac 中打開(kāi) Terminal 輸入 git --version 來(lái)驗(yàn)證安裝是否成功。

Git 的基礎(chǔ)知識(shí)
Git Bash 的默認(rèn)路徑為系統(tǒng)當(dāng)前用戶的文件夾,如在 Windows 中 C:\Users\hsujin,在 Mac 中 /Users/hsujin,默認(rèn)路徑下有 .bash_profile(Windows & Mac)或
.bashrc(Linux)、.bash_history.gitconfig 等文件。
這些文件通常是隱藏的,在 Mac 中打開(kāi) Finder 并轉(zhuǎn)到 Applications 頁(yè)面,鍵入 Command+Shift+H 即可進(jìn)入用戶主頁(yè),鍵入Command+Shift+. 即可切換是否可見(jiàn)隱藏文件和文件夾。

  1. 設(shè)置從 Git Bash 或 Terminal 中啟動(dòng)文本編輯器
  • 在 Windows 中設(shè)置從 Git Bash 中啟動(dòng) Notepad++

(1)在 Git Bash 輸入

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

注意路徑用 / 分隔,而不是 \ ,路徑中的空格和括號(hào)無(wú)需添加轉(zhuǎn)義字符 \ 。

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

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

注意路徑用 / 分隔,而不是 \ ,路徑中的空格和括號(hào)需要添加轉(zhuǎn)義字符 \ 。

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

  • 在 Mac 中設(shè)置從 Terminal 中啟動(dòng) Sublime Text

(1)在 Terminal 中輸入

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

注意路徑用 / 分隔,而不是 \ ,路徑中的空格和括號(hào)無(wú)需添加轉(zhuǎn)義字符 \ 。

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

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

注意路徑用 / 分隔,而不是 \ ,路徑中的空格和括號(hào)需要添加轉(zhuǎn)義字符 \ 。

(3)重啟 Terminal 后生效,輸入 subl .bash_profile 即可在 Sublime Text 中打開(kāi)文件 .bash_profile

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

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

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

(2)將課程提供的兩個(gè)文件放到默認(rèn)路徑下,其中 git-completion.bash 提供了自動(dòng)完成功能,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 (移動(dòng))指令,以及修改了文件的后綴。

(3)將課程提供的 .bash_profile 文件內(nèi)容加入到已有文件中,添加的內(nèi)容為
a) 加載了剛剛加入的兩個(gè)文件功能;
b) 添加了內(nèi)容變化的星號(hào)(*)提示;
c) 定義了 Git Bash 的文字顏色(用戶名紫色、checkout內(nèi)容及其他 git 內(nèi)容綠色、目錄及 $ 藍(lán)色、其他顏色默認(rèn))。

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

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

Part One
Git 是一種版本控制系統(tǒng)(VCS, Version Control System),VCS 可以保存項(xiàng)目開(kāi)發(fā)過(guò)程的所有版本,可用于還原先前版本,比較不同版本;同時(shí) VCS 還能使項(xiàng)目很方便與他人協(xié)作;另外利用版本控制系統(tǒng),可以讓開(kāi)發(fā)者更大膽地去探索和嘗試修改和改進(jìn)項(xiàng)目,思考項(xiàng)目中更深層次的架構(gòu)概念,而不用擔(dān)心毀掉整個(gè)項(xiàng)目。
Git 屬于 CVS(Concurrent Version System,并行版本系統(tǒng))的一種,SVN (Subversion) 又是在 CVS 的基礎(chǔ)改進(jìn)而成的。

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

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

本課學(xué)習(xí)到的五個(gè) 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。