Skip to content

Commit ba8350b

Browse files
committed
Patch chapter 3
1 parent ae55106 commit ba8350b

8 files changed

+226
-242
lines changed

book/03-git-branching/sections/basic-branching-and-merging.asc

+62-65
Large diffs are not rendered by default.

book/03-git-branching/sections/branch-management.asc

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[[_branch_management]]
2-
=== مدیریت برنچ
2+
=== مدیریت شاخه
33

44
(((branches, managing)))
5-
حال که چند برنچ را ساخته‌اید، مرج و پاک کرده‌اید، بیاید نگاهی به چند ابزار مدیریت برنچ بیندازیم که وقتی به شروع به استفادهٔ مادام از برنچ‌ها کردید به کارتان می‌آید.
5+
حال که چند برنچ ساخته‌اید، مرج و پاک کرده‌اید، بیاید نگاهی به چند ابزار مدیریت برنچ بیندازیم که وقتی شروع به استفادهٔ مادام از برنچ‌ها کردید به کارتان می‌آید.
66

77
دستور `git branch` بیشتر از ساختن و نابود کردن برنچ‌ها به کار می‌آید.
88
اگر بدون هیچ آرگومانی آنرا اجرا کنید، یک لیست ساده از برنچ‌های حاضر پروژه را به شما نمایش می‌دهد:
@@ -15,8 +15,8 @@ $ git branch
1515
testing
1616
----
1717

18-
به علامت `*` که پیش از برنچ `master` آمده توجه کنید: این علامت نشان‌دهندهٔ برنچی است که چک‌اوت کرده‌اید (به بیان دیگر برنچی که `HEAD` به آن اشاره دارد).
19-
این بدان معناست که اگر الآن کامیتی بگیرید، برنچ `master` با کار جدید شما به جلو می‌رود.
18+
به علامت `*` که پیش از برنچ `master` می‌آید توجه کنید: این علامت نشان‌دهندهٔ برنچی است که چک‌اوت کرده‌اید (به بیان دیگر برنچی که `HEAD` به آن اشاره دارد).
19+
این بدان معناست که اگر الآن کامیتی بگیرید، برنچ `master` با کار جدید شما به جلو خواهد رفت.
2020
برای دیدن آخرین کامیت هر برنچ می‌توانید `git branch -v` را اجرا کنید:
2121

2222
[source,console]
@@ -38,8 +38,7 @@ $ git branch --merged
3838
----
3939

4040
به این دلیل که شما سابقاً با `iss53` مرج شده‌اید آنرا در این لیست مشاهده می‌کنید.
41-
برنچ‌هایی که در این لیست در مقابلشان `*` ندارد، غالباً می‌توانند بی‌مشکل با `git branch -d` پاک شوند.
42-
شما قبل‌تر آنها را درون برنچی دیگر ریخته‌اید پس با پاک کردنشان چیزی از دست نخواهید داد.
41+
برنچ‌هایی در این لیست که مقابلشان `*` ندارد، غالباً می‌توانند بی‌مشکل با `git branch -d` پاک شوند؛ شما قبل‌تر آنها را درون برنچی دیگر ریخته‌اید پس با پاک کردنشان چیزی را از دست نخواهید داد.
4342

4443
برای مشاهده تمام برنچ‌هایی که شامل کارهایی هستند که هنوز مرج‌شان نکرده‌اید، می‌توانید `git branch --no-merged` را اجرا کنید:
4544

@@ -50,7 +49,7 @@ $ git branch --no-merged
5049
----
5150

5251
این دستور برنچ دیگر شما را نشان می‌دهد.
53-
به این دلیل که شامل کاری است که هنوز مرج نکرده‌اید، تلاش برای پاک کردنش با `git branch -d` شکست خواهد خورد:
52+
به این دلیل که شامل کاری است که هنوز مرج نکرده‌اید، تلاش برای پاک کردن آن با `git branch -d` شکست خواهد خورد:
5453

5554
[source,console]
5655
----
@@ -59,14 +58,15 @@ error: The branch 'testing' is not fully merged.
5958
If you are sure you want to delete it, run 'git branch -D testing'.
6059
----
6160

62-
اگر واقعاً می‌خواهیدی که آنرا پاک کنید و کار خود را از دست بدهید می‌توانید با `-D` آنرا به گیت تحمیل کنید، همانطور که در پیغام کمکی بالا به آن اشاره شده است.
61+
اگر واقعاً می‌خواهیدی که آنرا پاک کنید و کار خود را از دست بدهید می‌توانید با `-D` آنرا به گیت تحمیل کنید، همانطور پیغام مفید بالا به آن اشاره می‌کند.
6362

6463
[TIP]
6564
====
66-
اگر نام برنچ یا کامیتی به عنوان یک آرگومان به آپشن‌های مشروح بالا داده نشود، `--merged` و `--no-merged` به ترتیب به شما خروجی‌هایی را نشان می‌دهند که به نسبت برنچ _حاضر_ مرج‌شده یا مرج‌نشده‌اند.
65+
آپشن‌هایی که بالا توضیح داده شدند، `--merged` و `--no-merged` اگر نام برنچ یا کامیتی را به عنوان آرگومان دریافت نکنند، به شما خروجی‌هایی را نشان می‌دهند که به نسبت برنچ _حاضر_، به ترتیب،
66+
مرج‌شده یا مرج‌نشده‌اند.
6767
68-
همیشه می‌توانید یک آرگومان اضافه برای درخواست وضعیت مرج حاضر به نسبت برنچی خاص را وارد دستور کنید بدون آنکه بخواهید روی آن برنچ چک‌اوت کنید،
69-
مثلاً بخواهید بدانید چه برنچی با برنچ `master` مرج نشده است.
68+
همیشه می‌توانید یک آرگومان اضافه برای درخواست وضعیت مرج به نسبت برنچی خاص را وارد دستور کنید بدون آنکه بخواهید روی آن برنچ چک‌اوت کنید،
69+
مثلاً چه برنچی با برنچ `master` مرج نشده است؟
7070
[source,console]
7171
----
7272
$ git checkout testing

book/03-git-branching/sections/nutshell.asc

+24-24
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
[[_git_branches_overview]]
2-
=== برنچ‌ها در یک کلمه
2+
=== شاخه‌ها در یک کلمه
33

44
برای اینکه به راستی نحوهٔ شاخه‌سازی گیت را درک کنید، باید یک قدم به عقب برگردیم و نحوهٔ ثبت اطلاعات گیت را مطالعه کنیم.
55

6-
همانطور که از <<ch01-getting-started#ch01-getting-started>> به یاد دارید،‌گیت داده‌ها را به عنوان دسته‌ای از تغییرات یا تفاوت‌هایی بین فایل‌ها ذخیره نمی‌کند؛
7-
بلکه اطلاعات را بر به عنوان مجموعه‌ای از _اسنپ‌شات‌ها_ ذخیره می‌کند.
6+
همانطور که از <<ch01-getting-started#ch01-getting-started>> به یاد دارید، ‌گیت داده‌ها را به عنوان دسته‌ای از تغییرات یا تفاوت‌هایی بین فایل‌ها ذخیره نمی‌کند؛
7+
بلکه اطلاعات را به عنوان مجموعه‌ای از _اسنپ‌شات‌ها_ ذخیره می‌کند.
88

99
وقتی یک کامیت می‌سازید، گیت یک آبجکت کامیت که شامل یک نشانگر به اسنپ‌شات دربرگیرندهٔ اطلاعات صحنهٔ شماست را ذخیره می‌کند.
10-
این آبجکت همچنین شامل نام نویسنده و آدرس ایمیل او، پیغامی که وارد کرده‌اید و یک نشانگر به کامیت یا کامیت‌هایی که مستقیماً قبل این کامیت (والد یا والدین) آمده‌اند است.
11-
کامیت اولیه والدی ندارد؛ یک کامیت معمولی یک والد دارد؛ یک کامیت که حاصل مرج یک یا چند برنچ است چند والد دارد.
10+
این آبجکت همچنین شامل نام نویسنده و آدرس ایمیل او، پیغامی که وارد کرده‌اید و یک نشانگر به کامیت یا کامیت‌هایی که مستقیماً قبل این کامیت (والد یا والدین) آمده‌اند است:
11+
صفر والد برای کامیت اولیه، یک والد برای یک کامیت معمولی و چند والد برای یک کامیت مرج حاصل یک یا چند برنچ.
1212

1313
برای ملموس کردن این موضوع، فرض را بر این بگذاریم که پوشه‌ای حاوی سه فایل داریم و شما همهٔ آنها را استیج و کامیت می‌کنید.
1414
استیج کردن فایل‌های برای هر کدام از آنها یک چک‌سام (هش SHA-1 که در<<ch01-getting-started#ch01-getting-started>> ذکر کردیم) محاسبه می‌کند، آن نسخه از فایل را در مخزن گیت ذخیره می‌کند،
@@ -41,16 +41,16 @@ image::images/commits-and-parents.png[Commits and their parents.]
4141

4242
[NOTE]
4343
====
44-
برنچ ``master'' در گیت برنچ خاصی نیست.(((master)))
44+
برنچ «master» در گیت برنچ خاصی نیست.(((master)))
4545
این برنچ دقیقاً مشابه هر برنچ دیگری است.
4646
تنها دلیلی که تقریباً همهٔ مخزن‌ها یک برنچ با این نام دارند این است که دستور `git init` به طور پیش‌فرض آنرا می‌سازد و بیشتر مردم هم زحمت تغییر این نام را به خود نمی‌دهند.
4747
====
4848

49-
.یک برنچ و تاریخچهٔ کامیت‌هایش
49+
.یک برنچ و تاریخچهٔ کامیت‌های آن
5050
image::images/branch-and-history.png[A branch and its commit history.]
5151

5252
[[_create_new_branch]]
53-
==== ساختن یک برنچ جدید
53+
==== ساختن یک شاخه جدید
5454

5555
(((branches, creating)))
5656
وقتی یک برنچ جدید می‌سازید چه اتفاقی می‌افتد؟
@@ -120,7 +120,7 @@ $ git commit -a -m 'made a change'
120120
.هنگامی که کامیتی ساخته می‌شود برنچ هد به جلو می‌رود
121121
image::images/advance-testing.png[The HEAD branch moves forward when a commit is made.]
122122

123-
این مسئله جالب است چرا که الآن برنچ `testing` به جلو رفت در حالی که برنچ `master` هنوز به کامیتی که سابقاً، حین اجرای `git checkout` که برای تعویض برنچ‌ها استفاده شد، اشاره می‌کند.
123+
این جالب است چرا که الآن برنچ `testing` به جلو رفت در حالی که برنچ `master` هنوز به کامیتی، که سابقاً روی آن `git checkout` که برای تعویض برنچ‌ها استفاده شد، اشاره می‌کند.
124124
بیایید دوباره به برنچ `master` بازگردیم:
125125

126126
[source,console]
@@ -137,26 +137,26 @@ $ git checkout master
137137
به بیان دیگر، در حالت پیش‌فرض، `git log` فقط تاریخچهٔ کامیت‌های زیر برنچی که شما چک‌اوت کرده‌اید را نمایش می‌دهد.
138138
139139
برای نمایش تاریخچهٔ کامیت‌های برنچ مورد نظر باید به صراحت آن را نام ببرید: `git log testing`.
140-
برای نمایش تمام برنچ‌ها `--all` را به دستور `git log`تان بی‌افزایید.
140+
برای نمایش تمام برنچ‌ها `--all` را به دستور `git log` خود بی‌افزایید.
141141
====
142142

143143
.وقتی چک‌اوت می‌کنید هد جابه‌جا می‌شود
144144
image::images/checkout-master.png[HEAD moves when you checkout.]
145145

146-
آن دستور دو کار اصلی انجام داد.
147-
نشانگر هد را بازگردان تا به برنچ `master` اشاره کند و فایل‌هایی که در پوشه کاری کاری شما بودند را به اسنپ‌شاتی که `master` به آن اشاره می‌کرد بازگردانی (Revert/ریورت) کرد.
148-
این مسئله همچنین به این معنا است که تغییراتی که از این نقطه به بعد اعمال کنید از نسخه‌های قدیمی‌تر پروژه جدا خواهد ماند.
146+
آن دستور دو کار انجام داد.
147+
نشانگر هد را بازگرداند تا به برنچ `master` اشاره کند و فایل‌هایی که در پوشه کاری شما بودند را به اسنپ‌شاتی که `master` به آن اشاره می‌کرد بازگردانی کرد.
148+
این همچنین به این معنا است که تغییراتی که از این نقطه به بعد اعمال کنید از نسخه‌های قدیمی‌تر پروژه جدا خواهد ماند.
149149
در ساده‌ترین تعریف، کاری که در برنچ `testing` کردید را خنثی می‌کند تا بتوانید راه دیگری را در پیش بگیرید.
150150

151151
[NOTE]
152152
.تعویض برنچ فایل‌های درون پوشه کاری را تغییر می‌دهد
153153
====
154154
بسیار مهم است که به خاطر داشته باشید که تعویض برنچ در گیت فایل‌هایی که در پوشه کاری دارید را تغییر می‌دهد.
155-
اگر به برنچ قدیمی‌تری انتقال پیدا کنید، پوشه کاری شما به آن صورتی بازگردانی خواهد شد که آخرین بار هنگام ایجاد کامیت بود روی آن برنچ بوده است.
156-
اگر گیت نتواند این بازگردانی را به صورت بی‌نقص انجام دهد، نمی‌گذارد که تعویض برنچ انجام شود.
155+
اگر به برنچ قدیمی‌تری انتقال پیدا کنید، پوشه کاری شما به آن صورتی بازگردانی خواهد شد که آخرین بار هنگام ایجاد کامیت روی آن برنچ بوده است.
156+
اگر گیت نتواند این بازگردانی را به صورت بی‌نقص انجام دهد، نمی‌گذارد تعویض برنچ انجام شود.
157157
====
158158

159-
بیایید چند تغییر جدید اعمال کنیم و دوباره کامیت بگیریم:
159+
بیایید چند تغییر اعمال کنیم و دوباره کامیت بگیریم:
160160

161161
[source,console]
162162
----
@@ -165,16 +165,16 @@ $ git commit -a -m 'made other changes'
165165
----
166166

167167
اکنون تاریخچه پروژه شما دوشاخه شده است (به <<divergent_history>> مراجعه کنید).
168-
شما یک برنچ ساختید و به آن انتقال پیدا کردید، کمی روی آن کار کردید و سپس به برنچ اصلیتان بازگشتید و کمی کار متفاوت آنجا انجام دادید.
168+
شما یک برنچ ساختید و به آن انتقال پیدا کردید، کمی روی آن کار کردید و سپس به برنچ اصلی خود بازگشتید و آنجا کمی کار متفاوت انجام دادید.
169169
هر دوی آن تغییرات به صورت ایزوله در برنچ‌های خودشان موجوداند: شما می‌توانید بین برنچ‌ها جابه‌جا شوید و هرگاه آماده بودید آنها را با هم مرج کنید.
170-
و جالبتر اینکه همهٔ این کارها صرفاً با دستورهای `branch`، `checkout` و `commit` انجام دادید.
170+
و جالبتر اینکه همهٔ این کارها را صرفاً با دستورهای `branch`، `checkout` و `commit` انجام دادید.
171171

172172
[[divergent_history]]
173173
.تاریخچه دوشاخه شده
174174
image::images/advance-master.png[Divergent history.]
175175

176176
علاوه بر آن، با دستور `git log` می‌توانید این اطلاعات را ببینید.
177-
اگر `git log --oneline --decorate --graph --all` را اجرا کنید، برنامه تاریخچهٔ کامیت‌های شما را نمایش می‌دهد، نشان می‌دهد که نشانگرهای برنچ‌هایتان کجاست و چگوننه تاریخچهٔ شما دو شاخه شده است.
177+
اگر `git log --oneline --decorate --graph --all` را اجرا کنید، برنامه تاریخچهٔ کامیت‌های شما را نمایش می‌دهد، نشان می‌دهد که نشانگرهای برنچ‌هایتان کجاست و چگونه تاریخچهٔ شما دو شاخه شده است.
178178

179179
[source,console]
180180
----
@@ -190,15 +190,15 @@ $ git log --oneline --decorate --graph --all
190190
از این جهت که برنچ در گیت صرفاً یک فایل سادهٔ محتوی یک چک‌سام SHA-1 چهل حرفی کامیتی است که به آن اشاره می‌کند، ساختن و از بین بردن برنچ‌ها کم هزینه است.
191191
ساختن یک برنچ جدید به سادگی و سرعت نوشتن ۴۱ بایت اطلاعات درون یک فایل است (۴۰ حرف و یک خط جدید).
192192

193-
این قضیه بسیار متفاوت با نحوهٔ برنچ‌سازی ابزارهای VCS قدیمی است که شامل کپی کردن تمام فایل‌های پروژه به یک پوشه ثانوی می‌باشد.
193+
این قضیه بسیار متفاوت با نحوهٔ برنچ‌سازی بیشتر ابزارهای VCS قدیمی است که شامل کپی کردن تمام فایل‌های پروژه به یک پوشه ثانوی می‌باشد.
194194
این می‌تواند چندین ثانیه یا حتی دقیقه، بسته به سایز پروژه، طول بکشد؛ درحالی که در گیت این فرآیند همیشه آنی است.
195-
همچنین به علت اینکه هنگامی که کامیت می‌کنیم والد را هم در کامیت ثبت می‌کنیم، پیدا کردن یک پایهٔ ادغام برای مرج کردن به صورت خودکار برای ما انجام می‌شود و به طور کل به سهولت انجام می‌پذیرد.
196-
معمولاً مزایا توسعه‌دهندگان را به ساختن و استفاده از برنچ‌ها مشتاق می‌کند.
195+
همچنین به علت اینکه هنگامی که کامیت می‌کنیم والد را هم در کامیت ثبت می‌کنیم، پیدا کردن یک پایهٔ ادغام برای مرج کردن به صورت خودکار برای ما انجام می‌شود و به طور کل انجام آن بسیار آسان است.
196+
این مزایا توسعه‌دهندگان را به ساختن و استفاده بیشتر از برنچ‌ها مشتاق می‌کند.
197197

198-
بیایید به اینکه چرا باید شما هم از این کار را کنید نگاهی بیاندازیم.
198+
بیایید به اینکه چرا شما نیز باید این کار را کنید نگاهی بیاندازیم.
199199

200200
[NOTE]
201201
.ساختن یک برنچ جدید و انتقال به آن در آن واحد
202202
====
203-
خیلی اوقات پیش می‌آید که یک برنچ جدید بسازید و در آن واحد بخواهید به آن انتقال یابید -- این کار در یک عملیات با `git checkout -b <newbranchname>` قابل انجام است.
203+
خیلی اوقات پیش می‌آید که یک برنچ جدید بسازید و بخواهید در آن واحد به آن انتقال یابید -- این کار در یک عملیات با `git checkout -b <newbranchname>` قابل انجام است.
204204
====

0 commit comments

Comments
 (0)