Skip to content
Browse files

Merge https://github.com/vnwildman/gitmagic

  • Loading branch information...
2 parents 200c82f + 56b1b6e commit d6f483acfc049923628cc049f2b4fe22afd580a4 @blynn committed Jan 15, 2012
Showing with 77 additions and 36 deletions.
  1. +1 −1 en/preface.txt
  2. +1 −1 vi/basic.txt
  3. +24 −8 vi/clone.txt
  4. +34 −11 vi/history.txt
  5. +2 −2 vi/intro.txt
  6. +13 −11 vi/preface.txt
  7. +2 −2 vi/secrets.txt
View
2 en/preface.txt
@@ -18,7 +18,7 @@ Rather than go into details, we provide rough instructions for particular effect
- http://www.slideshare.net/slide_user/magia-git[Portuguese]: by Leonardo Siqueira Rodrigues [http://www.slideshare.net/slide_user/magia-git-verso-odt[ODT version]].
- link:/~blynn/gitmagic/intl/ru/[Russian]: by Tikhon Tarnavsky, Mikhail Dymskov, and others.
- link:/~blynn/gitmagic/intl/es/[Spanish]: by Rodrigo Toledo and Ariset Llerena Tapia.
- - link:/~blynn/gitmagic/intl/vi/[Vietnamese]: by Trần Ngọc Quân; also http://vnwildman.users.sourceforge.net/gitmagic.html[hosted on his website].
+ - link:/~blynn/gitmagic/intl/vi/[Vietnamese]: by Trần Ngọc Quân; also http://vnwildman.users.sourceforge.net/gitmagic/[hosted on his website].
.Other Editions
View
2 vi/basic.txt
@@ -187,7 +187,7 @@ Cũng có thể dùng lệnh:
Thường thường, tôi duyệt lịch sử bằng http://sourceforge.net/projects/qgit[qgit] để thay thế cách ở trên, bởi vì nó có giao diện đồ họa bóng bẩy, hay http://jonas.nitro.dk/tig/[tig], có giao diện dòng lệnh làm việc rất tốt với các máy có kết nối mạng chậm. Một lựa chọn khác là cài đặt máy chủ web, chạy lệnh *git instaweb* và sử dụng bất kỳ trình duyệt web nào.
-=== Bài Tập===
+=== Bài Tập ===
Coi A, B, C, D là 4 lần commit thành công, nơi mà B giống A ngoại trừ một số tệp tin bị xóa bỏ. Chúng ta muốn thêm các tệp tin đó trở lại D. Chúng ta thực hiện điều này bằng cách nào?
View
32 vi/clone.txt
@@ -17,8 +17,7 @@ Khởi tạo kho chứa Git và commit các tệp tin trên một máy tính. Sa
$ git commit -a
$ git pull other.computer:/path/to/files HEAD
-sẽ lấy về một trạng thái của các tệp tin trên máy tính khác về máy bạn đang làm việc. Nếu bạn vừa tạo ra một sự chỉnh sửa
-xung đột trong cùng một tệp tin , Git sẽ cho bạn biết và bạn có thể commit lại sau khi đã sửa chữa chúng.
+sẽ lấy về một trạng thái của các tệp tin trên máy tính khác về máy bạn đang làm việc. Nếu bạn vừa tạo ra một sự chỉnh sửa xung đột trong cùng một tệp tin , Git sẽ cho bạn biết và bạn có thể commit lại sau khi đã sửa chữa chúng.
=== Quản lý theo cách Cũ ===
@@ -33,7 +32,7 @@ Trên máy chủ trung tâm, khởi tạo 'kho bare' ở một thư mục nào
$ mkdir proj.git
$ cd proj.git
$ git init --bare
- $ # one-line variant: GIT_DIR=proj.git git init
+ $ touch proj.git/git-daemon-export-ok
Khởi động dịch vụ Git daemon nếu cần:
@@ -44,11 +43,11 @@ và khởi tạo kho Git. Cách thường thấy nhất là điền vào mẫu c
'Push' dự án của bạn lên máy chủ trung tâm bằng lệnh:
- $ git push git://central.server/path/to/proj.git HEAD
+ $ git push central.server/path/to/proj.git HEAD
Để lấy về mã nguồn, các nhà phát triển phần mềm chỉ cần gõ:
- $ git clone git://central.server/path/to/proj.git
+ $ git clone central.server/path/to/proj.git
Sau khi thay đổi, các nhà phát triển phần mềm sẽ lưu lại các thay đổi trên máy tính của mình:
@@ -69,7 +68,24 @@ Gửi thay đổi của mình lên máy chủ trung tâm:
Nếu máy chủ trung tâm có thay đổi bởi hành động của một người phát triển phần mềm khác, quá trình
push sẽ bị lỗi, và anh ta phải pull về bản mới nhất, xử lý các xung đột khi trộn, sau đó thử lại.
-=== Kho Thuần ===
+Người dùng phải có quyền truy cập SSH mới có thể thực hiện được lệnh pull và push ở trên.
+Tuy nhiên, ai cũng có thể lấy mã nguồn về bằng lệnh::
+
+ $ git clone git://central.server/path/to/proj.git
+
+Giao thức git nguyên bản thì cũng giống như là HTTP: ở đây không cần xác thực, do vậy ai cũng có thể
+lấy về dự án. Do vậy, theo mặc định, việc push thông qua giao thức git là
+không được phép.
+
+=== Mã nguồn riêng tư ===
+
+Với một dự án nguồn-đóng, bỏ quên lệnh touch, và chắc chắn là chưa từng
+tạo ra file nào có tên `git-daemon-export-ok`. Kho chứa từ giờ trở đi không thể lấy về
+thông qua giao thức git; chỉ những người có khả năng truy cập bằng SSH mới có thể thấy nó. Nếu tất cả
+các kho chứa đều đóng, việc chạy git daemon là không cần thiết nữa bởi vì tất cả
+việc truyền thông bây giờ đều thông qua SSH.
+
+=== Kho thuần ===
Kho thuần (bare) được đặt tên như vậy vì nó không chứa thư mục làm việc; nó chỉ chứa các tệp tin thường là ẩn trong thư mục phụ `.git`. Hay nói cách khác, nó chứa lịch sử mã nguồn của một dự án, và không bao giờ giữ dữ liệu còn đang dang dở của bất kỳ phiên bản nào.
@@ -82,7 +98,7 @@ thư mục làm việc.
Nhiều lệnh Git gặp lỗi trên kho thuần trừ phi biến môi trường `GIT_DIR` được đặt với giá trị là đường dẫn đến kho chứa, hay tùy chọn `--bare` được áp dụng.
-=== Push đối lập với pull ===
+=== Push ngược với pull ===
Tại sao chúng tôi lại giới thiệu lệnh push, thay vì trông cậy vào lệnh pull
quen thuộc? Trước hết, việc pull gặp lỗi trên kho thuần: thay vào đó bạn phải dùng lệnh 'fetch',
@@ -96,7 +112,7 @@ Tuy nhiên, ngoài trường hợp này ra, chúng ta còn nản lòng với vi
Tóm lại, khi bạn học Git, chỉ push khi đích là kho thuần; nếu không thì dùng pull.
-=== Rẽ Nhánh Dự Án ===
+=== Rẽ Nhánh một Dự Án ===
Bạn chán ngấy cách mà dự án mà bạn đang làm việc chạy? Bạn nghĩ mình có thể làm tốt hơn thế? Thế thì trên máy chủ của mình:
View
45 vi/history.txt
@@ -1,7 +1,7 @@
== Bài Học về Lịch Sử ==
Một hệ quả tất yếu của đặc tính phân tán của Git là việc lịch sử có thể biên soạn lại một cách
-dễ dàng. Nhưng nếu bạn xáo trộn quá khứ, hãy cẩn thận: chỉ biên soạn lại quá khứ trong lịch sử
+dễ dàng. Nhưng nếu bạn xáo trộn quá khứ, hãy cẩn thận: chỉ biên soạn lại các phần trong lịch sử
chỉ khi bạn sở hữu nó một mình. Cũng giống như việc các quốc gia tranh cãi không kết thúc xem ai là người
tận tâm hành động nào là tàn ác, nếu một người khác có một bản sao mà lịch sử của nó lại khác với
cái của bạn, bạn sẽ gặp rắc rối ngay khi cần tương tác với họ.
@@ -25,9 +25,11 @@ Bạn muốn thêm vài chỉnh sửa vào lần cuối mình đã commit ư? Th
$ git commit --amend -a
-=== ... Và Nhiều Lần mộtlúc ===
+=== ... Và Sau đó là Nhiều Lần ===
-Hãy giả sử vấn đề trục trặc ở lần commit cách đây mười lần. Trong một buổi làm việc dài, bạn đã tạo ra hàng tá các lần commit. Nhưng bạn không hoàn toàn hài lòng với cách mà chúng được tổ chức, và một số lần commit cần được soạn lại phần mô tả. Thế thì hãy gõ:
+Giả sử vấn đề trục trặc ở lần commit cách đây mười lần. Sau một buổi làm việc dài, bạn đã
+tạo ra hàng tá các lần commit. Nhưng bạn không hoàn toàn hài lòng với cách mà chúng được
+tổ chức, và một số lần commit cần được soạn lại phần mô tả. Thế thì hãy gõ:
$ git rebase -i HEAD~10
@@ -37,25 +39,43 @@ và 10 lần commit cuối sẽ xuất hiện trong $EDITOR yêu thích của b
pick a311a64 Reordered analogies in "Work How You Want"
pick 100834f Added push target to Makefile
-Thế thì:
+Lần commit cũ đứng trước lần mới hơn trong danh sách, không giống như kết quả khi chạy lệnh `log`.
+Ở đây, 5c6eb73 là lần commit cũ nhất, và 100834f là mới nhất. Thế thì:
--Xóa bỏ các lần commit bằng cách xóa các dòng tương ứng.
--Đặt lại các lần commit bằng các đặt lại các dòng.
-- Thay thế `pick` với:
+- Xóa bỏ các lần commit bằng cách xóa các dòng tương ứng. Giống như lệnh revert, nhưng không
+ghi biên bản: nó sẽ coi như là lần commit đó chưa từng bao giờ tồn tại.
+- Đặt lại thứ tự các lần commit bằng cách thay đổi thứ tự các dòng.
+- Thay thế `pick` bằng:
* `edit` để đánh dấu lần commit đó là dành cho việc tu bổ.
* `reword` để thay đổi phần chú giải.
* `squash` để hòa trộn với lần commit trước.
* `fixup` để hòa trộn với lần commit trước và bỏ qua việc ghi lại phần chú giải.
-Ghi lại và thoát ra. Nếu bạn đánh dấu một lần commit dành cho việc 'edit', thế thì
-chạy:
+Ví dụ, chúng ta chẳng hạn thay thế `pick` ở dòng thứ hai bằng `squash`:
- $ git commit --amend
+ pick 5c6eb73 Added repo.or.cz link
+ squash a311a64 Reordered analogies in "Work How You Want"
+ pick 100834f Added push target to Makefile
+
+Sau đó chúng ta ghi lại thay đổi và thoát ra. Git trộn lần a311a64 vào 5c6eb73. Vì vậy *squash* trộn
+với lần kế trước nó: có thể nghĩ đây là quá trình ``nén dữ liệu''.
+
+Hơn thế nữa, Git sau đó tổ hợp nhật ký của chúng và hiện tại và chỉnh sửa lại. Lệnh
+*fixup* bỏ qua bước này; việc sửa nhật ký đơn giản là bỏ qua.
-Cách khác, chạy:
+Nếu bạn đánh dấu một lần commit bằng *edit*, Git đưa bạn trở lại quá khứ, tới lần
+commit lâu nhất đó. Bạn có thể tu bổ một lần commit cũ như đã mô tả ở phần trên,
+và thậm chí tạo ra các lần commit mới ở chỗ này. Một khi bạn đã hài lòng với việc
+``retcon'', hãy chạy 'cỗ máy thời gian' bằng cách chạy lệnh:
$ git rebase --continue
+Git sửa commits cho tới *edit* kế tiếp, hoặc tới hiện tại nếu không còn việc gì cần phải làm.
+
+Bạn còn có thể bãi bỏ việc rebase bằng lệnh:
+
+ $ git rebase --abort
+
Do vậy cứ commit thoải mái và thường xuyên bởi vì bạn có thể dọn dẹp cho gọn gàng sau này bằng lệnh rebase.
=== Thay Đổi Riêng Sắp Xếp Sau ===
@@ -70,6 +90,9 @@ cờ *--onto* và tránh xa sự tương tác với các máy tính khác.
Xem thêm trong *git help rebase* để thấy được chi tiết các ví dụ dành cho lệnh đáng kinh ngạc này. Bạn có thể chia cắt các lần commit. Bạn còn có thể xắp xếp lại các nhánh của một cấu trúc cây.
+Hãy cẩn thận: rebase là một lệnh mạnh mẽ. Với những lần rebases phức tạp, trước hết hãy tạo ra
+một bản sao lưu dự phòng bằng lệnh *git clone*.
+
=== Viết Lại Lịch Sử ===
Thỉnh thoảng, bạn muốn việc quản lý mã nguồn giống việc người ta sơn vẽ chân dung một
View
4 vi/intro.txt
@@ -4,7 +4,7 @@ Tôi sử dụng cách ví von để giới thiệu về hệ thống quản lý
=== Công Việc giống như Trò Chơi ===
-Tôi đã chơi trò chơi trên máy tính suốt từ bé đến giờ. Ngược lại, tôi chỉ bắt đầu sử dụng hệ thống quản lý mã nguồn khi đã trưởng thành. Tôi tin rằng không chỉ có tôi như thế, và việc so sánh giữa hai điều đó sẽ làm các khái niệm trở nên dễ hiểu, dễ giải thích hơn.
+Tôi đã chơi trò chơi trên máy tính suốt từ bé đến giờ. Ngược lại, tôi chỉ bắt đầu sử dụng hệ thống quản lý mã nguồn khi đã trưởng thành. Tôi tin rằng không chỉ có tôi như thế, và việc so sánh giữa hai điều đó sẽ làm cho các khái niệm trở nên dễ hiểu, dễ giải thích hơn.
Hãy nghĩ việc biên soạn mã nguồn, tài liệu cũng giống như việc chúng ta đang chơi trò chơi trên máy tính. Một khi bạn đã làm được kha khá, bạn sẽ muốn ghi lại thành quả công việc của mình. Để làm điều đó, bạn chỉ việc bấm vào nút 'Save' trong chương trình biên soạn của mình.
@@ -40,7 +40,7 @@ Việc khởi tạo bản sao như thế có vẻ hơi xa hoa, đặc biệt là
Một quan niệm phổ biến là hệ thống phân tán không thích hợp với các dự án có yêu cầu một kho chứa trung tâm chính thức. Không điều gì có thể chà đạp lên sự thật. Chụp ảnh ai đó không có nghĩa là lấy đi linh hồn họ. Cũng như thế, nhân bản kho chính cũng không làm giảm đi sự quan trọng của nó.
-Tóm lại, một hệ thống phân tán đã thiết kế tốt thì làm bất cứ công việc nào cũng khá hơn một hệ thống quản lý mã nguồn tập trung. Tài nguyên mạng thường thì tốn kém hơn các tài nguyên nội bộ. Chúng ta sẽ nói đến các hạn chế của hệ thống phân tán sau, sự so sánh như sau thường đúng: hệ thống phân tán tốt hơn.
+Tóm lại, một hệ thống phân tán đã thiết kế tốt thì làm bất cứ công việc nào cũng khá hơn một hệ thống quản lý mã nguồn tập trung. Tài nguyên mạng thường thì tốn kém hơn các tài nguyên nội bộ. Chúng ta sẽ nói đến các hạn chế của hệ thống phân tán sau, sự so sánh như sau thường đúng: hệ thống phân tán thường tốt hơn.
Một dự án nhỏ có thể chỉ cần dùng một phần nhỏ các đặc tính được đưa ra bởi một
hệ thống như thế, nhưng việc sử dụng một hệ thống không có khả năng mở rộng cho một dự án nhỏ thì cũng giống như việc sử dụng
View
24 vi/preface.txt
@@ -12,13 +12,13 @@ Thay vì đi sâu vào chi tiết, chúng tôi đưa ra phác thảo cách làm
.Bản dịch
- - link:/\~blynn/gitmagic/intl/zh_cn/[Tiếng Trung Giản thể]: dịch bởi JunJie, Meng và JiangWei. Đã chuyển đổi sang:/~blynn/gitmagic/intl/zh_tw/[Tiếng Trung Phồn thể] thông qua lệnh +cconv -f UTF8-CN -t UTF8-TW+.
+ - link:/\~blynn/gitmagic/intl/zh_cn/[Tiếng Trung Giản thể]: dịch bởi JunJie, Meng và JiangWei. Đã chuyển đổi sang: link:/~blynn/gitmagic/intl/zh_tw/[Tiếng Trung Phồn thể] thông qua lệnh +cconv -f UTF8-CN -t UTF8-TW+.
- link:/~blynn/gitmagic/intl/fr/[Tiếng Pháp]: dịch bởi Alexandre Garel; và đồng thời được xuất bản tại http://tutoriels.itaapy.com/[itaapy].
- link:/~blynn/gitmagic/intl/de/[Tiếng Đức]: dịch bởi Benjamin Bellee và Armin Stebich. Armin ; và đồng thời xuất bản http://gitmagic.lordofbikes.de/[bản dịch tiếng Đức trên website của chính mình].
- http://www.slideshare.net/slide_user/magia-git[Tiếng Bồ Đào Nha]: dịch bởi Leonardo Siqueira Rodrigues [http://www.slideshare.net/slide_user/magia-git-verso-odt[định dạng ODT]].
- link:/~blynn/gitmagic/intl/ru/[Tiếng Nga]: dịch bởi Tikhon Tarnavsky, Mikhail Dymskov và một số người khác.
- link:/~blynn/gitmagic/intl/es/[Tiếng Tây Ban Nha]: dịch bởi Rodrigo Toledo và Ariset Llerena Tapia.
- - link:/~blynn/gitmagic/intl/vi/[Tiếng Việt]: dịch bởi Trần Ngọc Quân và đồng thời xuất bản bản dịch này trên http://vnwildman.users.sourceforge.net/gitmagic.html[trang Web cá nhân của mình].
+ - link:/~blynn/gitmagic/intl/vi/[Tiếng Việt]: dịch bởi Trần Ngọc Quân và đồng thời xuất bản bản dịch này trên http://vnwildman.users.sourceforge.net/gitmagic/[trang Web cá nhân của mình].
.Các định dạng khác
@@ -33,32 +33,34 @@ Tôi gửi lời cảm ơn đến những người đã dịch quyển sách nà
Tôi rất cảm kích vì có được số lượng độc giả rộng lớn có được bởi những người
đã được nêu tên ở trên.
-Dustin Sallings, Alberto Bertogli, James Cameron, Douglas Livingstone, Michael Budde, Richard Albury, Tarmigan, Derek Mahar, Frode Aannevik, Keith Rarick, Andy Somerville, Ralf Recker, Øyvind A. Holm, Miklos Vajna, Sébastien Hinderer, Thomas Miedema, Joe Malin, Tyler Breisacher đã đóng góp trong việc sửa chữa và cải tiến.
+Dustin Sallings, Alberto Bertogli, James Cameron, Douglas Livingstone, Michael Budde, Richard Albury, Tarmigan, Derek Mahar, Frode Aannevik, Keith Rarick, Andy Somerville, Ralf Recker, Øyvind A. Holm, Miklos Vajna, Sébastien Hinderer, Thomas Miedema, Joe Malin, Tyler Breisacher và Sonia Hamilton đã đóng góp trong việc sửa chữa và cải tiến nội dung.
François Marier đã bảo trì gói Debian do Daniel
Baumann khởi xướng.
Tôi cũng gửi lời cảm ơn tới sự giúp đỡ và sự tán dương của các bạn. Tôi muốn
-trích dẫn ra ở đây, nhưng làm như thế có vẻ hơi lố bịch.
+trích dẫn những lời đó ra đây, nhưng làm như thế có vẻ hơi lố bịch, tự cao tự đại.
Nếu tôi có sai sót gì, xin hãy thông tin hay gửi bản vá cho tôi!
-.Nơi lưu giữ Git miễn phí
-
- - http://repo.or.cz/[http://repo.or.cz/] lưu trữ các dự án miễn phí. Đây là địa chỉ lưu giữ Git đầu tiên. Được thành lập và bảo trì bởi một trong số những người phát triển Git đầu tiên.
- - http://gitorious.org/[http://gitorious.org/] là một địa chỉ lưu giữ Git khác nhằm vào các dự án nguồn mở.
- - http://github.com/[http://github.com/] lưu giữ các dự án nguồn mở miễn phí, và dự án riêng có thu phí.
-
+*Nơi có dịch vụ Git miễn phí*: Những địa chỉ sau đây cho phép lưu trữ các dự án công cộng miễn phí.
Trân thành cảm ơn các máy chủ đã lưu giữ bản hướng dẫn này.
+ - http://repo.or.cz/[repo.or.cz]
+ - http://gitorious.org/[Gitorious]
+ - http://github.com/[GitHub] lưu giữ các dự án riêng có thu phí.
+ - http://www.assembla.com/[Assembla]: lưu giữ các dự án riêng có thu phí, nhưng dù sao thì một gigabyte đầu tiên là miễn phí.
+
=== Giấy phép sử dụng ===
Hướng dẫn này được phát hành dựa trên Giấy Ghép Công phiên bản 3 http://www.gnu.org/licenses/gpl-3.0.html[the GNU General Public License version 3]. Đương nhiên, nội dung của quyển sách được quản lý bằng Git,
và bạn có thể dễ dàng có được nó bằng cách gõ:
$ git clone git://repo.or.cz/gitmagic.git # Tạo ra thư mục "gitmagic".
-hay từ các kho chứa khác:
+hay từ các máy chủ khác:
$ git clone git://github.com/blynn/gitmagic.git
$ git clone git://gitorious.org/gitmagic/mainline.git
+ $ git clone git://git.assembla.com/gitmagic.git
+
View
4 vi/secrets.txt
@@ -1,6 +1,6 @@
== Bí Quyết của Git ==
-Chúng ta mổ xẻ để hiểu được làm thế nào mà Git có thể thi hành kỳ diệu như vậy. Tôi sẽ không thể nói quá chi tiết được. Nếu bạn muốn có được sự mô tả chỉ tiết thì hãy đọc http://www.kernel.org/pub/software/scm/git/docs/user-manual.html[sổ tay hướng dẫn sử dụng Git].
+Chúng ta mổ xẻ để hiểu được làm thế nào mà Git có thể thi hành kỳ diệu như vậy. Tôi sẽ không thể nói quá chi tiết được. Nếu bạn muốn có được sự mô tả chỉ tiết thì hãy đọc http://schacon.github.com/git/user-manual.html[sổ tay hướng dẫn sử dụng Git].
=== Tính Ẩn ===
@@ -20,7 +20,7 @@ Bản thân giá trị SHA1 cũng là một chuỗi ký tự, chúng ta có th
Tóm lại, Git lưu giữ dữ liệu của bạn trong thư mục con `.git/objects`, thay vì sử dụng tên tệp tin như thông thường, bạn sẽ chỉ nhìn thấy ID của chúng. Bằng cách sử dụng ID để làm tên tệp tin, cũng tốt như là cách sử dụng kỹ thuật lockfiles (khóa tệp tin) và timestamp (theo dõi thời gian của tệp tin), Git biến hệ thống tệp tin thông thường bất kỳ nào trở thành một cơ sở dữ liệu hiệu quả và mạnh mẽ.
-=== Thông Minh===
+=== Thông Minh ===
Làm thể nào mà Git biết bạn đã đổi tên một tệp tin, dù là bạn chẳng bao giờ đề cập đến điều này một cách rõ ràng? Chắc chắn rồi, bạn có lẽ đã chạy lệnh *git mv*, nhưng nó chính xác giống hệt như việc chạy lệnh *git rm* sau đó là lệnh *git add*.

0 comments on commit d6f483a

Please sign in to comment.
Something went wrong with that request. Please try again.