Git的Staging Area的中文翻譯探討
Git的操作環境大致區分成三大塊:Working Directory、Staging Area與Repository。
1. 工作區
Working Directory、Working Tree:一般翻譯為工作區,Working Directory是由CVS時代就是這樣稱呼的,也就是目前程式的主要工作區域。
2. 整裝區
Staging Area、Index:Staging area一般翻譯為暫存區,但我覺得這個翻譯很容易對初學者造成混淆,它其實是扮演中介的角色,記錄著我們準備要提交到本地版本庫(Repository)裡存放的檔案的物件引用(Reference)的地方,因為是放引用而不是實體檔案,所以才又被稱為「索引」。Staging area的原意「【軍】集結待命地區」還比較符合它的實際用途,因此「整裝區」或「整備區」應該較符原意。Wikipedia對Staging area的解釋如下,和「舞台」沒什麼關係:
A staging area (otherwise staging point, staging base or staging post) is a location where organisms, people, vehicles, equipment or material are assembled before use.
我注意了一下Pro Git的正體中文版與簡體中文版裡對Staging area的翻譯都是暫存區,但標示的原文卻都誤為「stage area」或「staged area」,而英文版裡全部都是用「staging area」。
而「stage a file」的stage應該是當做動詞「置放」或「準備」的意思來聯想。暫存區則給stash用似乎比較好。
3. 版本庫
第三個區域就是存放所有檔案與其修改快照的儲存區,稱為倉庫(Repository),通常意譯為「版本庫」。
學習Git的參考連結
以下是最近蒐集到的Git學習網站:
- 詳盡又完整的Git書籍 Pro Git:正體中文版、簡體中文版、英文版
- 弄亂了Git怎麼辨?這裡有流程圖協助你,按圖索驥就能找到指令:Git pretty
- 一步一步學Git,有52個主題(繁體中文):Git Immersion
- 交互式學習Git分支觀念與技巧(繁體中文):Learn Git Branching
- Git教學-Git Magic:正體中文版、簡體中文版、英文版
- 圖解Git(Visual Git Reference):簡體中文版、英文版
- Git五大區域圖形展示:Git速查表/Git Cheatsheet
##
您可能也會有興趣的類似文章
- [分享] 濱野純訪談:為什麼 Google 接管開發 Git 2.0 了? (0則留言, 2018/05/25)
- [Git#8] 用pre-commit檢查提交時的分支是否正確 (0則留言, 2020/04/20)
- 將Git分支名稱加到提示字元(Prompt)裡 (0則留言, 2014/09/02)
- Subversion版本庫匯入Git的步驟與SVN整合步驟 (0則留言, 2014/10/03)
- [Git#9] Gitea 安裝與設定:輕量級程式碼託管解決方案 (0則留言, 2022/05/22)
- 建立測試環境以git rebase -i變更Commit歷史 (0則留言, 2014/10/08)
- [Windows] 用Gitea架設自用的Git Server (2則留言, 2017/07/21)
- [Git #2] 產生SSH金鑰,讓SmartGit與GitHub連線 (0則留言, 2019/12/29)
- Gitea網頁添加自訂選項以開啟說明文件 (0則留言, 2022/09/01)
- [Batch#3 Git#3] 如何在Windows批次檔裡將提示字元變更為Git分支名稱? (初學者的命令行 #7) (0則留言, 2020/01/05)
- 撰寫git info工具以模擬svn info功能 (0則留言, 2014/09/01)
- 啟用Gitea Server的SSH服務,可大幅增加連線速度 (0則留言, 2018/02/15)
- 幫Gitea網站使用Let’s Encrypt SSL憑證的設定步驟 (0則留言, 2022/09/01)
- Git https/SSL 連線失敗時的解決方法 (0則留言, 2022/09/06)
- [Git#1] SmartGit的安裝與設定 (0則留言, 2019/12/29)
查英英詞典,git 的 stage 應較似 “20.
to plan, organize, or carry out (an activity), especially for dramatic or public effect” 之意;查英漢詞典,git 的 stage 應較似「10. vt. 策划,筹划,组织」之意。
個人傾向把 staging area 稱作「預備區」,由於 plan, organize, carry out 涵括了從計劃到行動前期的許多階段,而 git 的 stage 比較接近「即將提交」的狀態,用「預備」應算適當。「準備」的語感稍有不同,且第一印象容易想到的英文是「prepare」,故不採用。
此外,staging area 還有兩個常用名稱,一個是「索引」(index),一個是「快取」(cache,也常譯作「緩存」),git 凡提到這三個詞,都是和 staging area 有關,比如:
* staging area 的實體檔案就是 .git/index(可嘗試把該檔案更名,會發現 git status 得出完全不同的結果)
* git stash pop –index 是在 pop 出檔案後也順便更新預備區
* git update-index 是更新預備區的內容
* git checkout-index 是把預備區的內容取出來
* git filter-branch –index-filter 是逐一更改各 commit 的預備區內容
* git diff –cached 或 git diff –staged 是拿預備區的內容和 HEAD 版本的內容比較
* git rm –cached 是只把檔案從預備區刪除
* ……
搞懂這個以後,很多 git 指令和選項的意義就豁然開朗了(以前沒人教,就摸索了很久orz)
感謝分享。 私以為軍事用語的集結待命很符合用途,意譯為整裝待發區也不錯。