Git 的運作方式——快照、分支與歷史紀錄 · 心智圖
Git 的運作方式——快照、分支與歷史紀錄. 可編輯嘅心智圖,以彩色分支、子題目同曲線連結呈現概念。 曲線表示關聯;只有方向重要時先用箭嘴。
Git 是一套以快照為基礎的版本控制系統:每一次提交都是儲存庫的一張完整圖像,並連向它的父提交,而分支只是沿著歷史紀錄移動的指標。
Git 的運作方式——快照、分支與歷史紀錄 · 心智圖
The interactive MindMap canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.
點樣閱讀呢張心智圖
- 由中央主題開始,沿住彩色分支探索相關概念。
- 曲線表示關聯;只有方向重要時先用箭嘴。
Working tree
呢個分支匯集 “Developer edits files in the working directory”.
Stage
呢個分支匯集 “git add moves changes into the staging area”.
Commit history
呢個分支匯集 “A commit is a snapshot of the whole repository plus metadata — author, message, timestamp. Git only stores the delta against the parent, so history stays small.”, “Git stores the commit with a pointer to its parent”, “The branch pointer moves to the new commit”.
Share
呢個分支匯集 “The commit graph is what makes Git a distributed tool: everyone has the full history locally, and ‘push’ and ‘pull’ only exchange the missing pieces.”, “Remote repository records the new history”, “History is shared and up to date”.
Resolve conflicts
呢個分支匯集 “Git merges divergent histories automatically when the changes touch different files or lines. Only overlapping edits produce a conflict.”, “Merge conflict — developer resolves it manually”.
跨分支關聯
一次提交是一張連向父提交的完整快照,而這正是歷史紀錄成為一張只增不改的圖的原因。
分支是一個指向某次提交的指標,不是裝著改動的容器——正因如此,建立與切換分支的成本都很低。
暫存是刻意設置的中間一步,讓你選擇一次提交裡到底包含甚麼。
Git 是分散式的:每個人在本機都持有完整的歷史紀錄,而 push 與 pull 只交換缺少的那些部分。
衝突是例外,不是常態——而一旦發生,就由人明確地去解決。
Key relationships and takeaways
- 一次提交是一張連向父提交的完整快照,而這正是歷史紀錄成為一張只增不改的圖的原因。
- 分支是一個指向某次提交的指標,不是裝著改動的容器——正因如此,建立與切換分支的成本都很低。
- 暫存是刻意設置的中間一步,讓你選擇一次提交裡到底包含甚麼。
- Git 是分散式的:每個人在本機都持有完整的歷史紀錄,而 push 與 pull 只交換缺少的那些部分。
- 衝突是例外,不是常態——而一旦發生,就由人明確地去解決。
When to use this visual
- 向一支只把 Git 當成一連串指令來用的團隊,講解快照這個模型。
- 用指標模型而不是死記硬背的指令,去解釋分支、合併與衝突。
- 以歷史紀錄實際的結構,為一次團隊提交與分支流程的覆核定下基礎。
運作方式
調整中央主題
按項目或課堂修改中央主題名稱。
擴展分支
編輯概念並加入例子或註解。
連結相關概念
畫出跨分支連結;只有方向重要時先用箭嘴。
常見問題
甚麼是 Git?它與其他版本控制有甚麼分別?
Git 是一套以快照為基礎的分散式版本控制系統。每一次提交儲存的是儲存庫的一張完整圖像,加上一個指向父提交的指標,而不只是一份檔案改動清單。由於每一位開發者在本機都持有完整的歷史紀錄,大部分操作都可以離線進行,而協作就只是與遠端交換提交這回事。
Git 裡的分支是甚麼?
分支是一個可以移動、指向某次提交的指標。當你在一條分支上提交,指標就前移到新的提交上;提交本身並不知道、也不在乎自己身處哪一條分支。這就是建立一條分支可以即時完成的原因,也是切換分支只改變你的工作目錄顯示哪一張快照的原因。
Git 為甚麼要有一個暫存區?
暫存區讓你有意識地組成一次提交。你可以編輯好幾個檔案,只把屬於同一件事的那些放入暫存,然後提交這個選擇——把無關的工作留在未提交的狀態。工作目錄、暫存區與儲存庫是三個各自獨立的狀態,而這正是這張圖解所畫的那條管線。
Git 怎樣解決合併衝突?
當兩條分支改動的是不同的檔案,或者不同的行,Git 會自動合併。當它們改動同樣的行,Git 猜不出哪一個版本才對,於是把衝突標示出來,交由人去選擇。衝突是一個決定,不是一次失敗——這也是這張圖解把它導向一個明確的解決步驟,之後歷史紀錄才共用出去的原因。
喺 QueryChart 編輯呢張心智圖
喺可編輯畫布開啟心智圖。移動概念、加入分支同畫連結。