Git版本控管

Git版本控管實務


分散式管理系統

  • Git為分散式版本控管系統,可把檔案狀態作為更新歷史紀錄加以保存,方便還原與追蹤
  • 為了解決協作時對於同一檔案的修改導致互相覆蓋,又無法紀錄修改等問題
  • 版本庫是記錄檔案或目錄狀態的地方,儲存內容的修改歷史記錄,分為本地端與遠端。
  • 本地端與遠端版本庫功能相同,差別在於遠端版本庫作為協作公開使用

三層式目錄結構

  • 工作目錄(working directory): 專案被取出的某一個版本。這些檔案從 Git 目錄內被壓縮過的資料庫中拉出來並放在保存目前專案的目錄供使用或修改
  • 暫存區域(staging area): 位於工作目錄與版本庫之間,為了向版本庫提交前的暫存區域。所有提交不會直接進版本庫,而是先進到暫存區作索引,之後才提交
  • Git 目錄(repository): Git 用來儲存專案的 metadata 及物件資料庫。這是 Git 最重要的部份,當從其它版本庫複製時會備份過來

名詞說明 Comment

  • Commit 提交修改到本地版本庫

  • Push 將提交上傳到遠端版本庫

  • Pulll 從遠端版本庫下載提交

  • Branch 建立新的分支

  • Merge 合併分支

  • Branch分支可以各自合併

  • 當分支開發完成,就可以合併回master

  • Checkout 切換分支

  • Stash 將當前修改加以暫存

  • 當有修改內容需要儲存起來但不想要馬上進行提交,常見於切換分支時,就可以使用Stash來進行儲藏


Win環境開啟SourceTree一直閃退

  • Step 1. 清除C:\Users\user\AppData\Local裏頭的Atlassian和SourceTree資料夾 清除C:\Users\user\AppData\Roaming裏頭的Atlassian資料夾
  • Step 2. 關閉pageant服務
  • Step 3. 重新安裝SourceTree

Push到遠端被拒 Comment

一般原因為遠端有新的提交還沒被Pull下來,只要先把新提交給Pull到本地端,就可以重新進行Push

修改到同一個檔案造成衝突

  • 當提交同時修改了同一個檔案,而系統無法分辨應該採用哪一個提交,就會產生衝突。
  • 衝突處理,就是讓提交人自己決定應該如何合併該檔案的修改
  • 衝突程式碼會出現以====為分隔線,箭頭為界的區塊,以標示各提交的修改內容。
  • 處理完成需將等號和箭頭等符號都移除,視為已解決

參考資料

git入門指南

Git 初學者的入門

Git & GitHub 教學手冊

30 天精通 Git 版本控管

GitHub Pages 教學手冊

Github Desktop

Sourcetree - git 的 GUI 管理軟體

Bitbucket