Upgrade to Pro — share decks privately, control downloads, hide ads and more …

git in a Nutshell (Traditional Chinese)

git in a Nutshell (Traditional Chinese)

This is an introduction to the basic usage of git distributed version control system. Since the tutorial mainly aims at senior high school students, it only covers the shallow surface of git.

Chehui Chou

August 06, 2016
Tweet

Other Decks in Education

Transcript

  1. git ❖ 版本控制系統 ❖ 使⽤ git 可以在本機檔案系統裡進⾏版本控制。 ❖ 每⼀次的更改都會被追蹤,並且每⼀次的更新都會被記 錄。

    ❖ 使⽤者可以取消更改,甚至回溯修改等等。 ❖ 不同的分⽀ (branch) 使得團隊合作更為容易。
  2. git ❖ 基本的 git 是透過命令列 (command line) 來執⾏。 ❖ ⽀援遠端伺服器備份和版本控制、協作。

    ❖ 透過 git 及各種不同的雲端 git 服務網站,原始碼的交流 和開放原始碼專案的進⾏變得更為容易。 ❖ 資源共享、原始碼共享
  3. 基本的 git 指令 ❖ git init - 在現在所在的資料夾建⽴⼀個 repository。 ❖

    在 macOS 底下基本的操作如下: ❖ $ mkdir myProject ❖ $ cd myProject ❖ $ git init
  4. 基本的 git 指令 ❖ repository 建⽴之後,⾸先使⽤ git status 來查看該資料夾底下 所有尚未被追蹤的檔案。

    ❖ 接著使⽤ git add . 將所有檔案加入到 staging area。 ❖ 當然也可以分別指定各項檔案。 ❖ 最後使⽤ git commit -m “some message” 指令將變更寫入到 repository 裡⾯。 ❖ 使⽤ git status 查看是否所有檔案都已經被追蹤到最新版。 ❖ 使⽤ git log 查看更新紀錄。
  5. git commit 的注意事項 ❖ 原則上不成⽂的慣例都會使⽤英⽂紀錄訊息。 ❖ 除非你有把握只有與你使⽤同樣的語⾔的⼈會查看你的 repository。 ❖ 所有的動詞都必須是簡單現在式。

    ❖ git commit -am “some message” 相當於 git add . 和 git commit - m。 ❖ 上述命令僅限已經被加入到 staging area/repository 的檔案。 ❖ 對於新的檔案不受影響。仍必須主動加入。 ❖ commit 訊息盡量少於 50 個字元。
  6. git diff filename ❖ 在編輯檔案之後,使⽤ git status 查看如果發現有紅⾊尚 未被追蹤的更動,使⽤ git

    diff filename 即可查看變化。 ❖ filename 替換成該檔案的名稱即可。 ❖ 需要包含路徑。
  7. 回溯 (backtrack) ❖ git show HEAD 可以顯⽰最近⼀次的 commit。 ❖ git

    checkout HEAD filename 可以取消⽬前對於檔案的更 動,恢復到該檔案最後⼀次 commit 的狀態。 ❖ 只要該次更動尚未 commit,不管是已經在 staging area 了或是還未使⽤ add 加入,都可以使⽤ checkout HEAD 取消更動。
  8. git reset ❖ 如果說不想取消檔案內容的變更,單純只是想要把檔案從 staging area 移除掉的話,可以使⽤ git reset HEAD

    filename。 ❖ 如果已經 commit 過了⽽且不只⼀次,使⽤ git log 顯⽰近 幾次更新,將 commit 的 SHA code 前七碼複製起來之 後,使⽤ git reset 2e181c1(例)即可取消該次 commit 之後所有的更新,同時 HEAD 也會被重新設定。 ❖ 之後再使⽤ git checkout HEAD filename 即可回溯歷史。
  9. 分⽀ (branching) ❖ git 允許⼀個 repository 存在不同分⽀ (branch)。 ❖ 不同分⽀裡⾯的變更不互相影響。

    ❖ 使⽤ git branch 檢視現在所在的分⽀及所有分⽀。 ❖ git branch newBranch 建⽴新的分⽀。 ❖ git checkout newBranch 切換到別的分⽀。
  10. Merge ❖ 在新的分⽀,所有的操作照舊。 ❖ 當要合併所有分⽀的變更時,使⽤ git merge newBranch。 ❖ 當檔案內容發⽣衝突的時候,git

    會提⽰。 ❖ 必須解決衝突之後再次進⾏ merge。 ❖ 當 merge 完畢之後,使⽤ git branch -d newBranch 刪除 別的分⽀。
  11. 團隊合作 ❖ 當你並非⼀個專案指定的⼯作⼈員,無法⾃⾏建⽴ branch,但是又想進⾏合作時,使⽤ git clone 可以將該 專案完全拷⾙⼀份。 ❖ 語法:git

    clone remote_location clone_name ❖ git remote 可以簡單檢視現在的 repository 有哪些 remote location。 ❖ git remote -v 可以同時檢視 fetch 和 push 的位置。
  12. git fetch ❖ 當你成功拷⾙⼀份副本到你的電腦上,但是⼀開始 clone 對象的遠端檔案產⽣變更時,使⽤ git fetch 可以將你的 副本更新。

    ❖ 此項命令不會發⽣ merge 功能。 ❖ fetch 會將遠端伺服器的變動建⽴在⼀個分⽀裡⾯,使⽤ 者必須⾃⼰進⾏ merge 來合併。
  13. git push ❖ 當你對遠端的 repository 有直接的存取權限時,可以直接使 ⽤ git push 將本機的變更推送到遠端伺服器。

    ❖ 語法:git push origin master ❖ origin 是遠端位置名稱 (git remote),master 則是本機的分⽀ 名稱。 ❖ 在有權限的情況下,如果發出 push 的本機分⽀和遠端分⽀名 稱⼀樣,則會覆蓋︔反之,則會建⽴⼀個新的分⽀。 ❖ 通常⽤在⾃⼰的遠端 repository,⽽不會⽤在開源專案。
  14. git pull 與 pull request ❖ 當你參與的是⼀項開源 (open source) 專案,⽽你並非專案的管理員或擁有者

    時,通常就會採⽤ pull request 的⽅式。 ❖ 顧名思義,pull request 即是在⾃⼰的帳號底下建⽴⼀個 repository(通常是 clone),並且邀請專案的管理員利⽤ git pull 從你的 repository 拉出更新到真 正的母 repository。 ❖ 語法:git request-pull -p <start> <url> <end> ❖ <start> 乃是原始 repository 的其中⼀次 commit 或更新版本(通常也是你 clone 時的版本)︔<url> 則是遠端伺服器的網址︔<end> 則是你⾃⼰的分⽀名稱。 ❖ 如果遠端的分⽀名稱與你的分⽀名稱不同的話,可以使⽤ <remote>:<local> 的 的⽅式標註分⽀名稱。master:test 即代表⾃⼰的 master 分⽀向遠端的 test 分⽀ 發出 pull request。
  15. 知名雲端 git 服務平台 ❖ GitHub - 全球最⼤代碼庫,幾乎⼤部分的開源專案都是 透過 GitHub 進⾏版本控制與協作。

    ❖ BitBucket - 也是頗負盛名的 git 雲端平台,值得⼀提的是 相較於 GitHub 若要建⽴私⼈的 repository 必須收費, BitBucket 在極⼩型團隊之下建⽴私⼈ repository 是免費 的。