---
# System prepended metadata

title: Git版本控管實務

---

# Git版本控管實務
分散式管理系統
Git為分散式版本控管系統，可把檔案狀態作為更新歷史紀錄加以保存，方便還原與追蹤
為了解決協作時對於同一檔案的修改導致互相覆蓋，又無法紀錄修改等問題
版本庫是記錄檔案或目錄狀態的地方，儲存內容的修改歷史記錄，分為本地端與遠端。
本地端與遠端版本庫功能相同，差別在於遠端版本庫作為協作公開使用
三層式目錄結構
工作目錄(working directory)：
專案被取出的某一個版本。這些檔案從 Git 目錄內被壓縮過的資料庫中拉出來並放在保存目前專案的目錄供使用或修改
暫存區域(staging area)：
位於工作目錄與版本庫之間，為了向版本庫提交前的暫存區域。所有提交不會直接進版本庫，而是先進到暫存區作索引，之後才提交
Git 目錄(repository)：
Git 用來儲存專案的 metadata 及物件資料庫。這是 Git 最重要的部份，當從其它版本庫複製時會備份過來
Git工作流程


名詞說明
Commit 提交修改到本地版本庫
Push 將提交上傳到遠端版本庫
Pulll 從遠端版本庫下載提交
Branch 建立新的分支

用於發布多個版本

Merge 合併分支

Branch分支可以各自合併


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

Checkout 切換分支


Stash 將當前修改加以暫存

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

問題排除
一直出現驗證失敗的問題
用Token取代Git帳密的做法

Step 1.進入Github的個人設定>Developer settings>Personal access tokens

Step 2.點選Generate new token後，選擇repository相關的權限後，建立一個新token後，就能得到token序號

Step 3.將網址的地方改用以下的格式

https://你的帳號:你的TOKEN@github.com/javck/voyage.git

Win環境開啟SourceTree一直閃退
Step 1.
清除C:\Users\user\AppData\Local裏頭的Atlassian和SourceTree資料夾
清除C:\Users\user\AppData\Roaming裏頭的Atlassian資料夾

Step 2.
關閉pageant服務

Step 3.
重新安裝SourceTree

Push到遠端被拒


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



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


當提交同時修改了同一個檔案，而系統無法分辨應該採用哪一個提交，就會產生衝突。
衝突處理，就是讓提交人自己決定應該如何合併該檔案的修改
衝突程式碼會出現以====為分隔線，箭頭為界的區塊，以標示各提交的修改內容。


處理完成需將等號和箭頭等符號都移除，視為已解決

發表於  HackMD
 89
讚賞 收藏 訂閱