Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

[zh-tw] Synchronize with En version #666

Merged
merged 2 commits into from

2 participants

善哉 Jean-Noël Avila
善哉

No description provided.

Jean-Noël Avila jnavila merged commit a0acbb7 into from
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Feb 7, 2014
  1. 善哉
  2. 善哉

    [zh-tw] Update Chapter 2

    YueLinHo authored
This page is out of date. Refresh to see the latest.
8 zh-tw/01-introduction/01-chapter1.markdown
View
@@ -132,16 +132,16 @@ Git目錄是Git用來儲存讀者的專案的元數據及物件資料庫。 這
openssl-devel zlib-devel
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
- libz-dev
-
+ libz-dev libssl-dev
+
當讀者安裝所有必要的程式庫,讀者可到Git的網站取得最新版本:
http://git-scm.com/download
接著,編譯及安裝:
- $ tar -zxf git-1.6.0.5.tar.gz
- $ cd git-1.6.0.5
+ $ tar -zxf git-1.7.2.2.tar.gz
+ $ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
2  zh-tw/02-git-basics/01-chapter2.markdown
View
@@ -616,6 +616,7 @@ The lines must be formatted as follows
選項 選項的說明
-p 顯示每個更新與上一個的差異。
+ --word-diff 使用 word diff 格式顯示 patch 內容。
--stat 顯示每個更新更動的檔案的統計及摘要資訊。
--shortstat 僅顯示--stat提供的的訊息中關於更動、插入、刪除的文字。
--name-only 在更新的訊息後方顯示更動的檔案列表。
@@ -624,6 +625,7 @@ The lines must be formatted as follows
--relative-date 以相對於目前時間方式顯示日期(例如:“2 weeks ago”),而不是完整的日期格式。
--graph 以 ASCII 在 log 輸出旁邊畫出分支的分歧及合併。
--pretty 以其它格式顯示更新。 可用的選項包含oneline、short、full、fuller及可自訂格式的format。
+ --oneline `--pretty=oneline --abbrev-commit` 的簡短用法。
### 限制 log 的輸出範圍 ###
12 zh-tw/07-customizing-git/01-chapter7.markdown
View
@@ -1,6 +1,5 @@
# Git 客製化 #
-So far, I’ve covered the basics of how Git works and how to use it, and I’ve introduced a number of tools that Git provides to help you use it easily and efficiently. In this chapter, I’ll go through some operations that you can use to make Git operate in a more customized fashion by introducing several important configuration settings and the hooks system. With these tools, it’s easy to get Git to work exactly the way you, your company, or your group needs it to.
到目前為止,我闡述了 Git 基本的運作機制和使用方式,介紹了 Git 提供的許多工具來幫助你簡單且有效地使用它。在本章,我將會介紹 Git 的一些重要的組態設定(configuration)和鉤子(hooks)機制以滿足自訂的要求。通過這些工具,它能夠更容易地使 Git 按照你、你的公司或團隊所需要的方式去運作。
## Git 配置 ##
@@ -298,7 +297,6 @@ Git 預設情況下不會在推送期間檢查所有物件的一致性。Git 雖
某些檔案看起來像是文字檔,但其實是看做為二進位資料。例如,在 Mac 上的 Xcode 專案含有一個以 `.pbxproj` 結尾的檔,它是由記錄設置項的 IDE 寫到磁碟的 JSON 資料集(純文字 javascript 資料類型)。雖然技術上看它是由 ASCII 字元組成的文字檔,但是你並不想這麼看它,因為它確實是一個輕量級資料庫 — 如果有兩個人改變了它,你沒辦法合併它們,diff 通常也幫不上忙,只有機器才能進行識別和操作,於是,你想把它當成二進位檔案。
-To tell Git to treat all `pbxproj` files as binary data, add the following line to your `.gitattributes` file:
讓 Git 把所有 `pbxproj` 檔當成二進位檔案,在 `.gitattributes` 文件中加上下面這行:
*.pbxproj -crlf -diff
@@ -326,7 +324,12 @@ To tell Git to treat all `pbxproj` files as binary data, add the following line
當你要看比較結果時,如果檔副檔名是 ”doc”,Git 會使用 ”word” 篩檢程式(filter)。什麼是 ”word” 篩檢程式呢?你必須設置它。下面你將設定 Git 使用 `strings` 程式,把 Word 文檔轉換成可讀的文字檔,之後再進行比較:
- $ git config diff.word.textconv strings
+ $ git config diff.word.textconv catdoc
+
+This command adds a section to your `.git/config` that looks like this:
+
+ [diff "word"]
+ textconv = catdoc
現在 Git 知道了,如果它要在在兩個快照之間做比較,而其中任何一個檔檔名是以 `.doc` 結尾,它應該要對這些檔執行 ”word” 篩檢程式,也就是定義為執行 `strings` 程式。這樣就可以在比較前把 Word 檔轉換成文字檔。
@@ -522,7 +525,6 @@ Git 屬性在將專案匯出歸檔(archive)時也能發揮作用。
### 合併策略 ###
-You can also use Git attributes to tell Git to use different merge strategies for specific files in your project. One very useful option is to tell Git to not try to merge specific files when they have conflicts, but rather to use your side of the merge over someone else’s.
通過 Git 屬性,還能對專案中的特定檔案使用不同的合併策略。一個非常有用的選項就是,當一些特定檔案發生衝突,Git 不會嘗試合併他們,而使用你這邊的來覆蓋別人的。
如果專案的一個分支有歧義或比較特別,但你想從該分支合併,而且需要忽略其中某些檔,這樣的合併策略是有用的。例如,你有一個資料庫設置檔 database.xml,在兩個分支中他們是不同的,你想合併一個分支到另一個,而不弄亂該資料庫檔,可以設置屬性如下:
@@ -641,7 +643,6 @@ update 腳本和 `pre-receive` 腳本十分類似,除了它會為推送者更
changed the version number
-A simple way to get the commit message from a commit when you have the SHA-1 value is to go to the first blank line and take everything after that. You can do so with the `sed` command on Unix systems:
通過 SHA-1 值獲得提交內容中的提交資訊的一個簡單辦法是找到提交的第一個空白行,然後取出它之後的所有內容。可以使用 Unix 系統的 `sed` 命令來實現這個效果:
$ git cat-file commit ca82a6 | sed '1,/^$/d'
@@ -924,7 +925,6 @@ A simple way to get the commit message from a commit when you have the SHA-1 val
git rev-list ^#{sha}^@ refs/remotes/#{remote_ref}
-The `SHA^@` syntax resolves to all the parents of that commit. You’re looking for any commit that is reachable from the last commit on the remote and that isn’t reachable from any parent of any of the SHAs you’re trying to push up — meaning it’s a fast-forward.
`SHA^@` 語法解析該次提交的所有祖先。我們尋找任何一個提交,這個提交可以從遠端最後一次提交衍變獲得(reachable),但從我們嘗試推送的任何一個提交的 SHA 值的任何一個祖先都無法衍變獲得——也就是 fast-forward 的內容。
這個解決方案的缺點在於它可能會很慢而且通常是沒有必要的——只要不用 -f 來強制推送,伺服器會自動給出警告並且拒絕推送內容。然而,這是個不錯的練習,而且理論上能幫助用戶避免一個將來不得不回頭修改的衍合操作。
14 zh-tw/08-git-and-other-scms/01-chapter8.markdown
View
@@ -144,7 +144,6 @@ Git 中所有 Subversion 橋接命令的基礎是 `git svn` 。所有的命令
### 拉取最新進展 ###
-If you’re working with other developers, then at some point one of you will push, and then the other one will try to push a change that conflicts. That change will be rejected until you merge in their work. In `git svn`, it looks like this:
如果要與其他開發者協作,總有那麼一天你推送完畢之後,其他人發現他們推送自己修改的時候(與你推送的內容)產生衝突。這些修改在你合併之前將一直被拒絕。在 `git svn` 裡這種情況像這樣:
$ git svn dcommit
@@ -397,18 +396,20 @@ Git 通過搜尋提交歷史中 Subversion 分支的頭部(tip)來決定 dcommit
要把標籤變成合適的 Git 標籤,執行
- $ cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
- $ rm -Rf .git/refs/remotes/tags
+ $ git for-each-ref refs/remotes/tags | cut -d / -f 4- | grep -v @ | while read tagname; do git tag "$tagname" "tags/$tagname"; git branch -r -d "tags/$tagname"; done
該命令將原本以 `tag/` 開頭的遠端分支的索引變成真正的 (lightweight) 標籤。
接下來,把 `refs/remotes` 下面剩下的索引(reference)變成本地分支:
- $ cp -Rf .git/refs/remotes/* .git/refs/heads/
- $ rm -Rf .git/refs/remotes
+ $ git for-each-ref refs/remotes | cut -d / -f 3- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/$branchname"; git branch -r -d "$branchname"; done
現在所有的舊分支都變成真正的 Git 分支,所有的舊標籤也變成真正的 Git 標籤。最後一項工作就是把新建的 Git 伺服器添加為遠端伺服器並且向它推送。為了讓所有的分支和標籤都得到上傳,我們使用這條命令:
+ $ git remote add origin git@my-git-server:myrepository.git
+
+Because you want all your branches and tags to go up, you can now run this:
+
$ git push origin --all
$ git push origin --tags
@@ -559,7 +560,8 @@ Git 通過搜尋提交歷史中 Subversion 分支的頭部(tip)來決定 dcommit
export_data('imported from ' + dir)
puts 'from :' + last_mark if last_mark
-為了簡化,時區寫死(hardcode)為(-0700)。如果是從其他版本控制系統導入,則必須以變數的形式指明時區。提交訊息必須以特定格式給出:
+為了簡化,時區寫死(hardcode)為(-0700)。如果是從其他版本控制系統導入,則必須以變數的形式指明時區。
+提交訊息必須以特定格式給出:
data (size)\n(contents)
7 zh-tw/09-git-internals/01-chapter9.markdown
View
@@ -495,8 +495,7 @@ blob 物件與之前的已經不同了。這說明雖然只是往一個 400 行
仍保留著的幾個物件是未被任何 commit 引用的 blob ── 在此例中是你之前創建的 “what is up, doc?” 和 “test content” 這兩個示例 blob。你從沒將他們添加至任何 commit,所以 Git 認為它們是懸而未決的,不會將它們打包進 packfile 。
-The other files are your new packfile and an index. The packfile is a single file containing the contents of all the objects that were removed from your filesystem. The index is a file that contains offsets into that packfile so you can quickly seek to a specific object. What is cool is that although the objects on disk before you ran the `gc` were collectively about 12K in size, the new packfile is only 6K. You’ve halved your disk usage by packing your objects.
-剩下的檔是新創建的 packfile 以及一個索引。packfile 檔包含了剛才從檔案系統中移除的所有物件。索引檔包含了 packfile 的偏移資訊(offset),這樣就可以快速定位任意一個指定物件。有意思的是執行 `gc` 命令前磁片上的物件大小約為 12K ,而這個新生成的 packfile 僅為 6K 大小。通過打包物件減少了一半磁片使用空間。
+剩下的檔是新創建的 packfile 以及一個索引。packfile 檔包含了剛才從檔案系統中移除的所有物件。索引檔包含了 packfile 的偏移資訊(offset),這樣就可以快速定位任意一個指定物件。有意思的是執行 `gc` 命令前磁片上的物件大小約為 8K ,而這個新生成的 packfile 僅為 4K 大小。通過打包物件減少了一半磁片使用空間。
Git 是如何做到這點的?Git 打包物件時,會查找命名及尺寸相近的檔,並只保存檔案不同版本之間的差異內容。可以查看一下 packfile ,觀察它是如何節省空間的。`git verify-pack` 命令用於顯示已打包的內容:
@@ -529,7 +528,8 @@ Git 是如何做到這點的?Git 打包物件時,會查找命名及尺寸相
## The Refspec ##
-這本書讀到這裡,你已經使用過一些簡單的遠端分支到本地引用的映射方式了,這種映射可以更為複雜。假設你像這樣添加了一項遠端倉庫:
+這本書讀到這裡,你已經使用過一些簡單的遠端分支到本地引用的映射方式了,這種映射可以更為複雜。
+假設你像這樣添加了一項遠端倉庫:
$ git remote add origin git@github.com:schacon/simplegit-progit.git
@@ -547,7 +547,6 @@ Refspec 的格式是一個可選的 `+` 號,接著是 `<src>:<dst>` 的格式
$ git log remotes/origin/master
$ git log refs/remotes/origin/master
-They’re all equivalent, because Git expands each of them to `refs/remotes/origin/master`.
它們的作用都是相同的,因為 Git 把它們都擴展成 `refs/remotes/origin/master`.
如果你想讓 Git 每次只拉取遠端的 `master` 分支,而不是遠端的所有分支,你可以把 fetch 這一行修改成這樣:
Something went wrong with that request. Please try again.