Skip to content

Commit

Permalink
為 Git 指令和術詞加上英文附註
Browse files Browse the repository at this point in the history
  • Loading branch information
YueLinHo committed May 4, 2016
1 parent 5e9b678 commit 9aa18c3
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions book/03-git-branching/sections/remote-branches.asc
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
=== 遠端分支

(((branches, remote)))(((references, remote)))
遠端參照是位於遠端版本庫上的參照,包括分支、標籤等等
遠端參照(references)是位於遠端版本庫上的參照,包括分支(branch)、標籤(tag)等等
你可以使用 `git ls-remote [remote]` 明確地列出遠端參照完整的列表,或者使用 `git remote show [remote]` 取得更多遠端分支資訊;
然而,更好的方式是利用「遠端追蹤分支」。
然而,更好的方式是利用「遠端追蹤分支(remote-tracking branch)」。

遠端追蹤分支用來記錄遠端分支的狀態,
它們是無法移動的本地參照,但是會根據網路通訊的結果而自動移動;
它扮演著書籤的角色,用來提醒你上次與遠端通訊後那些遠端上的分支所在之處。

它們採用 `(遠端)/(分支)` 這樣的形式,
例如,你想看上次與 `origin` 版本庫通訊後,它的 `master` 分支指向哪一個提交,你應該查看 `origin/master` 分支;
如果你和同伴一起修正某個議題,而他先推送 `iss53` 分支到遠端版本庫;雖然在你的本地端可能也有一個 `iss53` 分支,但伺服器上的 `iss53` 分支會跟 `origin/iss53` 指向同一個提交。
如果你和同伴一起修正某個議題,而他先推送 `iss53` 分支到遠端版本庫;雖然在你的本地端可能也有一個 `iss53` 分支,但伺服器上的 `iss53` 分支會跟 `origin/iss53` 指向同一個提交(commit)

可能有點令人困惑,所以讓我們直接舉例說明;
假設你的網路有一個 Git 伺服器位於 `git.ourcompany.com`,
Expand All @@ -30,14 +30,14 @@ Git 也會建立屬於你自己的 `master` 本地分支,同樣地,它也指
.克隆後,伺服器和本地端的版本庫
image::images/remote-branches-1.png[克隆後,伺服器和本地端的版本庫。]

如果你在本地分支 `master` 做了一些工作,與此同時,有人推送到 `git.ourcompany.com` 而更新了伺服器上的 `master` 分支,這會讓你的提交歷史朝著不同方向發展;
如果你在本地分支 `master` 做了一些工作,與此同時,有人推送(push)到 `git.ourcompany.com` 而更新了伺服器上的 `master` 分支,這會讓你的提交歷史朝著不同方向發展;
不過只要你不和伺服器連絡,你的 `origin/master` 指標並不會移動。

.本地和遠端的歷史分離開來
image::images/remote-branches-2.png[本地和遠端的歷史分離開來。]

執行 `git fetch origin` 可以同步遠端伺服器上的資料到本地,
該命令首先尋找 `origin` 是哪個伺服器(本例是 `git.ourcompany.com`),從上面獲取你尚未擁有的資料,更新你本地的資料庫,然後把 `origin/master` 指標同步到最新的位置。
該命令首先尋找 `origin` 是哪個伺服器(本例是 `git.ourcompany.com`),從上面獲取(fetch)你尚未擁有的資料,更新你本地的資料庫,然後把 `origin/master` 指標同步到最新的位置。

.`git fetch` 會更新你的遠端參照
image::images/remote-branches-3.png[`git fetch` 會更新你的遠端參照。]
Expand All @@ -62,7 +62,7 @@ image::images/remote-branches-5.png[遠端追蹤分支 `teamone/master`。]
(((pushing)))
當你想跟世界分享某個分支,你需要把它推送到一個你擁有寫入權限的遠端版本庫;
你的本地分支並不會自動同步到遠端上——你必需明確地推送你想分享的分支;
透過這種方式,你可以將無意分享的分支保留下來做為私用分支,而只推送需要協同工作的主題分支
透過這種方式,你可以將無意分享的分支保留下來做為私用分支,而只推送需要協同工作的主題(topic)分支

如果你有個叫做 `serverfix` 的分支需要和其他人一起開發,
執行 `git push <遠端> <分支>`:(((git commands, push)))
Expand All @@ -89,10 +89,10 @@ Git 會把 `serverfix` 分支名稱自動地擴展為 `refs/heads/serverfix:refs
[NOTE]
.不想每次都輸入密碼
====
如果你正在使用 HTTPS URL 推送資料,Git 伺服器為了核對身份會詢問你的帳號和密碼
如果你正在使用 HTTPS URL 推送資料,Git 伺服器為了核對身份(authentication)會詢問你的帳號和密碼
預設情況它會在終端提示你輸入相關資訊,這樣伺服器才能分辨你是否有推送權限。
如果你不想每次推送時都輸入它們,你可以設置「證書快取」;
如果你不想每次推送時都輸入它們,你可以設置「證書快取(credential cache)」;
最簡單的方式是執行 `git config --global credential.helper cache` 將它保留記憶體幾分鐘。
詳見 <<_credential_caching>> 以取得各種可使用的、詳細的證書快取方式。
Expand Down Expand Up @@ -130,7 +130,7 @@ Switched to a new branch 'serverfix'
==== 追蹤分支

(((branches, tracking)))(((branches, upstream)))
從遠端追蹤分支身上檢出的本地分支會自動升級為「追蹤分支」(它所追蹤的分支則稱為「上游分支」),
從遠端追蹤分支身上檢出的本地分支會自動升級為「追蹤分支(tracking branch)」(它所追蹤的分支則稱為「上游分支(upstream branch)」),
追蹤分支是一種和某個遠端分支有直接聯繫的本地分支;
如果你切換到追蹤分支並執行 `git pull`,Git 會自動分辨要從哪一個伺服器獲取資料,然後自動辨別要合併哪一個分支進來(譯註:就是合併上游分支)。

Expand Down Expand Up @@ -164,7 +164,7 @@ Branch sf set up to track remote branch serverfix from origin.
Switched to a new branch 'sf'
----

現在你的本地分支 `sf` 將會自動從 `origin/serverfix` 拉取資料
現在你的本地分支 `sf` 將會自動從 `origin/serverfix` 拉取(pull)資料

如果你已經有一個本地分支,並且想要它追蹤一個你剛下載的遠端追蹤分支,或者想要改變追蹤上游分支,在任何時候都可以使用 `git branch` 的 `-u` 或 `--set-upstream-to` 選項來明確地設定。

Expand All @@ -182,7 +182,7 @@ Branch serverfix set up to track remote branch serverfix from origin.
====

如果你想知道你設定了哪些追蹤本支,你可以使用 `git branch` 的 `-vv` 選項;
它以更詳盡的資訊列出本地分支,其中包括了它追蹤的分支為何,它們是超前、落後,或者二者都有!?
它以更詳盡的資訊列出本地分支,其中包括了它追蹤的分支為何,它們是超前(ahead)、落後(behind),或者二者都有!?

[source,console]
----
Expand Down

0 comments on commit 9aa18c3

Please sign in to comment.