Skip to content

Commit d6f483a

Browse files
committed
2 parents 200c82f + 56b1b6e commit d6f483a

File tree

7 files changed

+77
-36
lines changed

7 files changed

+77
-36
lines changed

Diff for: en/preface.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Rather than go into details, we provide rough instructions for particular effect
1818
- 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]].
1919
- link:/~blynn/gitmagic/intl/ru/[Russian]: by Tikhon Tarnavsky, Mikhail Dymskov, and others.
2020
- link:/~blynn/gitmagic/intl/es/[Spanish]: by Rodrigo Toledo and Ariset Llerena Tapia.
21-
- 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].
21+
- link:/~blynn/gitmagic/intl/vi/[Vietnamese]: by Trần Ngọc Quân; also http://vnwildman.users.sourceforge.net/gitmagic/[hosted on his website].
2222

2323
.Other Editions
2424

Diff for: vi/basic.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ Cũng có thể dùng lệnh:
187187

188188
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.
189189

190-
=== Bài Tập===
190+
=== Bài Tập ===
191191

192192
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?
193193

Diff for: vi/clone.txt

+24-8
Original file line numberDiff line numberDiff line change
@@ -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
1717
$ git commit -a
1818
$ git pull other.computer:/path/to/files HEAD
1919

20-
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
21-
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.
20+
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.
2221

2322
=== Quản lý theo cách Cũ ===
2423

@@ -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
3332
$ mkdir proj.git
3433
$ cd proj.git
3534
$ git init --bare
36-
$ # one-line variant: GIT_DIR=proj.git git init
35+
$ touch proj.git/git-daemon-export-ok
3736

3837
Khởi động dịch vụ Git daemon nếu cần:
3938

@@ -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
4443

4544
'Push' dự án của bạn lên máy chủ trung tâm bằng lệnh:
4645

47-
$ git push git://central.server/path/to/proj.git HEAD
46+
$ git push central.server/path/to/proj.git HEAD
4847

4948
Để lấy về mã nguồn, các nhà phát triển phần mềm chỉ cần gõ:
5049

51-
$ git clone git://central.server/path/to/proj.git
50+
$ git clone central.server/path/to/proj.git
5251

5352
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:
5453

@@ -69,7 +68,24 @@ Gửi thay đổi của mình lên máy chủ trung tâm:
6968
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
7069
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.
7170

72-
=== Kho Thuần ===
71+
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.
72+
Tuy nhiên, ai cũng có thể lấy mã nguồn về bằng lệnh::
73+
74+
$ git clone git://central.server/path/to/proj.git
75+
76+
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ể
77+
lấy về dự án. Do vậy, theo mặc định, việc push thông qua giao thức git là
78+
không được phép.
79+
80+
=== Mã nguồn riêng tư ===
81+
82+
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
83+
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ề
84+
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ả
85+
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ả
86+
việc truyền thông bây giờ đều thông qua SSH.
87+
88+
=== Kho thuần ===
7389

7490
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.
7591

@@ -82,7 +98,7 @@ thư mục làm việc.
8298

8399
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.
84100

85-
=== Push đối lập với pull ===
101+
=== Push ngược với pull ===
86102

87103
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
88104
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
96112

97113
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.
98114

99-
=== Rẽ Nhánh Dự Án ===
115+
=== Rẽ Nhánh một Dự Án ===
100116

101117
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:
102118

Diff for: vi/history.txt

+34-11
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
== Bài Học về Lịch Sử ==
22

33
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
4-
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ử
4+
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ử
55
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
66
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
77
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
2525

2626
$ git commit --amend -a
2727

28-
=== ... Và Nhiều Lần mộtlúc ===
28+
=== ... Và Sau đó là Nhiều Lần ===
2929

30-
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õ:
30+
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 đã
31+
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
32+
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õ:
3133

3234
$ git rebase -i HEAD~10
3335

@@ -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
3739
pick a311a64 Reordered analogies in "Work How You Want"
3840
pick 100834f Added push target to Makefile
3941

40-
Thế thì:
42+
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`.
43+
Ở đây, 5c6eb73 là lần commit cũ nhất, và 100834f là mới nhất. Thế thì:
4144

42-
-Xóa bỏ các lần commit bằng cách xóa các dòng tương ứng.
43-
-Đặt lại các lần commit bằng các đặt lại các dòng.
44-
- Thay thế `pick` với:
45+
- 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
46+
ghi biên bản: nó sẽ coi như là lần commit đó chưa từng bao giờ tồn tại.
47+
- Đặt lại thứ tự các lần commit bằng cách thay đổi thứ tự các dòng.
48+
- Thay thế `pick` bằng:
4549
* `edit` để đánh dấu lần commit đó là dành cho việc tu bổ.
4650
* `reword` để thay đổi phần chú giải.
4751
* `squash` để hòa trộn với lần commit trước.
4852
* `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.
4953

50-
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ì
51-
chạy:
54+
Ví dụ, chúng ta chẳng hạn thay thế `pick` ở dòng thứ hai bằng `squash`:
5255

53-
$ git commit --amend
56+
pick 5c6eb73 Added repo.or.cz link
57+
squash a311a64 Reordered analogies in "Work How You Want"
58+
pick 100834f Added push target to Makefile
59+
60+
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
61+
với lần kế trước nó: có thể nghĩ đây là quá trình ``nén dữ liệu''.
62+
63+
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
64+
*fixup* bỏ qua bước này; việc sửa nhật ký đơn giản là bỏ qua.
5465

55-
Cách khác, chạy:
66+
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
67+
commit lâu nhất đó. Bạn có thể tu bổ một lần commit cũ như đã mô tả ở phần trên,
68+
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
69+
``retcon'', hãy chạy 'cỗ máy thời gian' bằng cách chạy lệnh:
5670

5771
$ git rebase --continue
5872

73+
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.
74+
75+
Bạn còn có thể bãi bỏ việc rebase bằng lệnh:
76+
77+
$ git rebase --abort
78+
5979
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.
6080

6181
=== 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.
7090

7191
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.
7292

93+
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
94+
một bản sao lưu dự phòng bằng lệnh *git clone*.
95+
7396
=== Viết Lại Lịch Sử ===
7497

7598
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

Diff for: vi/intro.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Tôi sử dụng cách ví von để giới thiệu về hệ thống quản lý
44

55
=== Công Việc giống như Trò Chơi ===
66

7-
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.
7+
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.
88

99
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.
1010

@@ -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à
4040

4141
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ó.
4242

43-
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.
43+
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.
4444

4545
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
4646
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

Diff for: vi/preface.txt

+13-11
Original file line numberDiff line numberDiff line change
@@ -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
1212

1313
.Bản dịch
1414

15-
- 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+.
15+
- 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+.
1616
- 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].
1717
- 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].
1818
- 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]].
1919
- link:/~blynn/gitmagic/intl/ru/[Tiếng Nga]: dịch bởi Tikhon Tarnavsky, Mikhail Dymskov và một số người khác.
2020
- link:/~blynn/gitmagic/intl/es/[Tiếng Tây Ban Nha]: dịch bởi Rodrigo Toledo và Ariset Llerena Tapia.
21-
- 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].
21+
- 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].
2222

2323
.Các định dạng khác
2424

@@ -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à
3333
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
3434
đã được nêu tên ở trên.
3535

36-
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.
36+
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.
3737

3838
François Marier đã bảo trì gói Debian do Daniel
3939
Baumann khởi xướng.
4040

4141
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
42-
trích dẫn ra ở đây, nhưng làm như thế có vẻ hơi lố bịch.
42+
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.
4343

4444
Nếu tôi có sai sót gì, xin hãy thông tin hay gửi bản vá cho tôi!
4545

46-
.Nơi lưu giữ Git miễn phí
47-
48-
- 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.
49-
- 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ở.
50-
- 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í.
51-
46+
*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í.
5247
Trân thành cảm ơn các máy chủ đã lưu giữ bản hướng dẫn này.
5348

49+
- http://repo.or.cz/[repo.or.cz]
50+
- http://gitorious.org/[Gitorious]
51+
- http://github.com/[GitHub] lưu giữ các dự án riêng có thu phí.
52+
- 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í.
53+
5454
=== Giấy phép sử dụng ===
5555

5656
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,
5757
và bạn có thể dễ dàng có được nó bằng cách gõ:
5858

5959
$ git clone git://repo.or.cz/gitmagic.git # Tạo ra thư mục "gitmagic".
6060

61-
hay từ các kho chứa khác:
61+
hay từ các máy chủ khác:
6262

6363
$ git clone git://github.com/blynn/gitmagic.git
6464
$ git clone git://gitorious.org/gitmagic/mainline.git
65+
$ git clone git://git.assembla.com/gitmagic.git
66+

0 commit comments

Comments
 (0)