You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: book/03-git-branching/sections/branch-management.asc
+11-11
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
1
[[_branch_management]]
2
-
=== مدیریت برنچ
2
+
=== مدیریت شاخه
3
3
4
4
(((branches, managing)))
5
-
حال که چند برنچ را ساختهاید، مرج و پاک کردهاید، بیاید نگاهی به چند ابزار مدیریت برنچ بیندازیم که وقتی به شروع به استفادهٔ مادام از برنچها کردید به کارتان میآید.
5
+
حال که چند برنچ ساختهاید، مرج و پاک کردهاید، بیاید نگاهی به چند ابزار مدیریت برنچ بیندازیم که وقتی شروع به استفادهٔ مادام از برنچها کردید به کارتان میآید.
6
6
7
7
دستور `git branch` بیشتر از ساختن و نابود کردن برنچها به کار میآید.
8
8
اگر بدون هیچ آرگومانی آنرا اجرا کنید، یک لیست ساده از برنچهای حاضر پروژه را به شما نمایش میدهد:
@@ -15,8 +15,8 @@ $ git branch
15
15
testing
16
16
----
17
17
18
-
به علامت `*` که پیش از برنچ `master` آمده توجه کنید: این علامت نشاندهندهٔ برنچی است که چکاوت کردهاید (به بیان دیگر برنچی که `HEAD` به آن اشاره دارد).
19
-
این بدان معناست که اگر الآن کامیتی بگیرید، برنچ `master` با کار جدید شما به جلو میرود.
18
+
به علامت `*` که پیش از برنچ `master` میآید توجه کنید: این علامت نشاندهندهٔ برنچی است که چکاوت کردهاید (به بیان دیگر برنچی که `HEAD` به آن اشاره دارد).
19
+
این بدان معناست که اگر الآن کامیتی بگیرید، برنچ `master` با کار جدید شما به جلو خواهد رفت.
20
20
برای دیدن آخرین کامیت هر برنچ میتوانید `git branch -v` را اجرا کنید:
21
21
22
22
[source,console]
@@ -38,8 +38,7 @@ $ git branch --merged
38
38
----
39
39
40
40
به این دلیل که شما سابقاً با `iss53` مرج شدهاید آنرا در این لیست مشاهده میکنید.
41
-
برنچهایی که در این لیست در مقابلشان `*` ندارد، غالباً میتوانند بیمشکل با `git branch -d` پاک شوند.
42
-
شما قبلتر آنها را درون برنچی دیگر ریختهاید پس با پاک کردنشان چیزی از دست نخواهید داد.
41
+
برنچهایی در این لیست که مقابلشان `*` ندارد، غالباً میتوانند بیمشکل با `git branch -d` پاک شوند؛ شما قبلتر آنها را درون برنچی دیگر ریختهاید پس با پاک کردنشان چیزی را از دست نخواهید داد.
43
42
44
43
برای مشاهده تمام برنچهایی که شامل کارهایی هستند که هنوز مرجشان نکردهاید، میتوانید `git branch --no-merged` را اجرا کنید:
45
44
@@ -50,7 +49,7 @@ $ git branch --no-merged
50
49
----
51
50
52
51
این دستور برنچ دیگر شما را نشان میدهد.
53
-
به این دلیل که شامل کاری است که هنوز مرج نکردهاید، تلاش برای پاک کردنش با `git branch -d` شکست خواهد خورد:
52
+
به این دلیل که شامل کاری است که هنوز مرج نکردهاید، تلاش برای پاک کردن آن با `git branch -d` شکست خواهد خورد:
54
53
55
54
[source,console]
56
55
----
@@ -59,14 +58,15 @@ error: The branch 'testing' is not fully merged.
59
58
If you are sure you want to delete it, run 'git branch -D testing'.
60
59
----
61
60
62
-
اگر واقعاً میخواهیدی که آنرا پاک کنید و کار خود را از دست بدهید میتوانید با `-D` آنرا به گیت تحمیل کنید، همانطور که در پیغام کمکی بالا به آن اشاره شده است.
61
+
اگر واقعاً میخواهیدی که آنرا پاک کنید و کار خود را از دست بدهید میتوانید با `-D` آنرا به گیت تحمیل کنید، همانطور پیغام مفید بالا به آن اشاره میکند.
63
62
64
63
[TIP]
65
64
====
66
-
اگر نام برنچ یا کامیتی به عنوان یک آرگومان به آپشنهای مشروح بالا داده نشود، `--merged` و `--no-merged` به ترتیب به شما خروجیهایی را نشان میدهند که به نسبت برنچ _حاضر_ مرجشده یا مرجنشدهاند.
65
+
آپشنهایی که بالا توضیح داده شدند، `--merged` و `--no-merged` اگر نام برنچ یا کامیتی را به عنوان آرگومان دریافت نکنند، به شما خروجیهایی را نشان میدهند که به نسبت برنچ _حاضر_، به ترتیب،
66
+
مرجشده یا مرجنشدهاند.
67
67
68
-
همیشه میتوانید یک آرگومان اضافه برای درخواست وضعیت مرج حاضر به نسبت برنچی خاص را وارد دستور کنید بدون آنکه بخواهید روی آن برنچ چکاوت کنید،
69
-
مثلاً بخواهید بدانید چه برنچی با برنچ `master` مرج نشده است.
68
+
همیشه میتوانید یک آرگومان اضافه برای درخواست وضعیت مرج به نسبت برنچی خاص را وارد دستور کنید بدون آنکه بخواهید روی آن برنچ چکاوت کنید،
Copy file name to clipboardexpand all lines: book/03-git-branching/sections/nutshell.asc
+24-24
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
1
[[_git_branches_overview]]
2
-
=== برنچها در یک کلمه
2
+
=== شاخهها در یک کلمه
3
3
4
4
برای اینکه به راستی نحوهٔ شاخهسازی گیت را درک کنید، باید یک قدم به عقب برگردیم و نحوهٔ ثبت اطلاعات گیت را مطالعه کنیم.
5
5
6
-
همانطور که از <<ch01-getting-started#ch01-getting-started>> به یاد دارید،گیت دادهها را به عنوان دستهای از تغییرات یا تفاوتهایی بین فایلها ذخیره نمیکند؛
7
-
بلکه اطلاعات را بر به عنوان مجموعهای از _اسنپشاتها_ ذخیره میکند.
6
+
همانطور که از <<ch01-getting-started#ch01-getting-started>> به یاد دارید،گیت دادهها را به عنوان دستهای از تغییرات یا تفاوتهایی بین فایلها ذخیره نمیکند؛
7
+
بلکه اطلاعات را به عنوان مجموعهای از _اسنپشاتها_ ذخیره میکند.
8
8
9
9
وقتی یک کامیت میسازید، گیت یک آبجکت کامیت که شامل یک نشانگر به اسنپشات دربرگیرندهٔ اطلاعات صحنهٔ شماست را ذخیره میکند.
10
-
این آبجکت همچنین شامل نام نویسنده و آدرس ایمیل او، پیغامی که وارد کردهاید و یک نشانگر به کامیت یا کامیتهایی که مستقیماً قبل این کامیت (والد یا والدین) آمدهاند است.
11
-
کامیت اولیه والدی ندارد؛ یک کامیت معمولی یک والد دارد؛ یک کامیت که حاصل مرج یک یا چند برنچ است چند والد دارد.
10
+
این آبجکت همچنین شامل نام نویسنده و آدرس ایمیل او، پیغامی که وارد کردهاید و یک نشانگر به کامیت یا کامیتهایی که مستقیماً قبل این کامیت (والد یا والدین) آمدهاند است:
11
+
صفر والد برای کامیت اولیه، یک والد برای یک کامیت معمولی و چند والد برای یک کامیت مرج حاصل یک یا چند برنچ.
12
12
13
13
برای ملموس کردن این موضوع، فرض را بر این بگذاریم که پوشهای حاوی سه فایل داریم و شما همهٔ آنها را استیج و کامیت میکنید.
14
14
استیج کردن فایلهای برای هر کدام از آنها یک چکسام (هش SHA-1 که در<<ch01-getting-started#ch01-getting-started>> ذکر کردیم) محاسبه میکند، آن نسخه از فایل را در مخزن گیت ذخیره میکند،
@@ -41,16 +41,16 @@ image::images/commits-and-parents.png[Commits and their parents.]
41
41
42
42
[NOTE]
43
43
====
44
-
برنچ ``master'' در گیت برنچ خاصی نیست.(((master)))
44
+
برنچ «master» در گیت برنچ خاصی نیست.(((master)))
45
45
این برنچ دقیقاً مشابه هر برنچ دیگری است.
46
46
تنها دلیلی که تقریباً همهٔ مخزنها یک برنچ با این نام دارند این است که دستور `git init` به طور پیشفرض آنرا میسازد و بیشتر مردم هم زحمت تغییر این نام را به خود نمیدهند.
47
47
====
48
48
49
-
.یک برنچ و تاریخچهٔ کامیتهایش
49
+
.یک برنچ و تاریخچهٔ کامیتهای آن
50
50
image::images/branch-and-history.png[A branch and its commit history.]
51
51
52
52
[[_create_new_branch]]
53
-
==== ساختن یک برنچ جدید
53
+
==== ساختن یک شاخه جدید
54
54
55
55
(((branches, creating)))
56
56
وقتی یک برنچ جدید میسازید چه اتفاقی میافتد؟
@@ -120,7 +120,7 @@ $ git commit -a -m 'made a change'
120
120
.هنگامی که کامیتی ساخته میشود برنچ هد به جلو میرود
121
121
image::images/advance-testing.png[The HEAD branch moves forward when a commit is made.]
122
122
123
-
این مسئله جالب است چرا که الآن برنچ `testing` به جلو رفت در حالی که برنچ `master` هنوز به کامیتی که سابقاً، حین اجرای `git checkout` که برای تعویض برنچها استفاده شد، اشاره میکند.
123
+
این جالب است چرا که الآن برنچ `testing` به جلو رفت در حالی که برنچ `master` هنوز به کامیتی، که سابقاً روی آن `git checkout` که برای تعویض برنچها استفاده شد، اشاره میکند.
124
124
بیایید دوباره به برنچ `master` بازگردیم:
125
125
126
126
[source,console]
@@ -137,26 +137,26 @@ $ git checkout master
137
137
به بیان دیگر، در حالت پیشفرض، `git log` فقط تاریخچهٔ کامیتهای زیر برنچی که شما چکاوت کردهاید را نمایش میدهد.
138
138
139
139
برای نمایش تاریخچهٔ کامیتهای برنچ مورد نظر باید به صراحت آن را نام ببرید: `git log testing`.
140
-
برای نمایش تمام برنچها `--all` را به دستور `git log`تان بیافزایید.
140
+
برای نمایش تمام برنچها `--all` را به دستور `git log` خود بیافزایید.
141
141
====
142
142
143
143
.وقتی چکاوت میکنید هد جابهجا میشود
144
144
image::images/checkout-master.png[HEAD moves when you checkout.]
145
145
146
-
آن دستور دو کار اصلی انجام داد.
147
-
نشانگر هد را بازگردان تا به برنچ `master` اشاره کند و فایلهایی که در پوشه کاری کاری شما بودند را به اسنپشاتی که `master` به آن اشاره میکرد بازگردانی (Revert/ریورت) کرد.
148
-
این مسئله همچنین به این معنا است که تغییراتی که از این نقطه به بعد اعمال کنید از نسخههای قدیمیتر پروژه جدا خواهد ماند.
146
+
آن دستور دو کار انجام داد.
147
+
نشانگر هد را بازگرداند تا به برنچ `master` اشاره کند و فایلهایی که در پوشه کاری شما بودند را به اسنپشاتی که `master` به آن اشاره میکرد بازگردانی کرد.
148
+
این همچنین به این معنا است که تغییراتی که از این نقطه به بعد اعمال کنید از نسخههای قدیمیتر پروژه جدا خواهد ماند.
149
149
در سادهترین تعریف، کاری که در برنچ `testing` کردید را خنثی میکند تا بتوانید راه دیگری را در پیش بگیرید.
150
150
151
151
[NOTE]
152
152
.تعویض برنچ فایلهای درون پوشه کاری را تغییر میدهد
153
153
====
154
154
بسیار مهم است که به خاطر داشته باشید که تعویض برنچ در گیت فایلهایی که در پوشه کاری دارید را تغییر میدهد.
155
-
اگر به برنچ قدیمیتری انتقال پیدا کنید، پوشه کاری شما به آن صورتی بازگردانی خواهد شد که آخرین بار هنگام ایجاد کامیت بود روی آن برنچ بوده است.
156
-
اگر گیت نتواند این بازگردانی را به صورت بینقص انجام دهد، نمیگذارد که تعویض برنچ انجام شود.
155
+
اگر به برنچ قدیمیتری انتقال پیدا کنید، پوشه کاری شما به آن صورتی بازگردانی خواهد شد که آخرین بار هنگام ایجاد کامیت روی آن برنچ بوده است.
156
+
اگر گیت نتواند این بازگردانی را به صورت بینقص انجام دهد، نمیگذارد تعویض برنچ انجام شود.
157
157
====
158
158
159
-
بیایید چند تغییر جدید اعمال کنیم و دوباره کامیت بگیریم:
159
+
بیایید چند تغییر اعمال کنیم و دوباره کامیت بگیریم:
160
160
161
161
[source,console]
162
162
----
@@ -165,16 +165,16 @@ $ git commit -a -m 'made other changes'
165
165
----
166
166
167
167
اکنون تاریخچه پروژه شما دوشاخه شده است (به <<divergent_history>> مراجعه کنید).
168
-
شما یک برنچ ساختید و به آن انتقال پیدا کردید، کمی روی آن کار کردید و سپس به برنچ اصلیتان بازگشتید و کمی کار متفاوت آنجا انجام دادید.
168
+
شما یک برنچ ساختید و به آن انتقال پیدا کردید، کمی روی آن کار کردید و سپس به برنچ اصلی خود بازگشتید و آنجا کمی کار متفاوت انجام دادید.
169
169
هر دوی آن تغییرات به صورت ایزوله در برنچهای خودشان موجوداند: شما میتوانید بین برنچها جابهجا شوید و هرگاه آماده بودید آنها را با هم مرج کنید.
170
-
و جالبتر اینکه همهٔ این کارها صرفاً با دستورهای `branch`، `checkout` و `commit` انجام دادید.
170
+
و جالبتر اینکه همهٔ این کارها را صرفاً با دستورهای `branch`، `checkout` و `commit` انجام دادید.
علاوه بر آن، با دستور `git log` میتوانید این اطلاعات را ببینید.
177
-
اگر `git log --oneline --decorate --graph --all` را اجرا کنید، برنامه تاریخچهٔ کامیتهای شما را نمایش میدهد، نشان میدهد که نشانگرهای برنچهایتان کجاست و چگوننه تاریخچهٔ شما دو شاخه شده است.
177
+
اگر `git log --oneline --decorate --graph --all` را اجرا کنید، برنامه تاریخچهٔ کامیتهای شما را نمایش میدهد، نشان میدهد که نشانگرهای برنچهایتان کجاست و چگونه تاریخچهٔ شما دو شاخه شده است.
از این جهت که برنچ در گیت صرفاً یک فایل سادهٔ محتوی یک چکسام SHA-1 چهل حرفی کامیتی است که به آن اشاره میکند، ساختن و از بین بردن برنچها کم هزینه است.
191
191
ساختن یک برنچ جدید به سادگی و سرعت نوشتن ۴۱ بایت اطلاعات درون یک فایل است (۴۰ حرف و یک خط جدید).
192
192
193
-
این قضیه بسیار متفاوت با نحوهٔ برنچسازی ابزارهای VCS قدیمی است که شامل کپی کردن تمام فایلهای پروژه به یک پوشه ثانوی میباشد.
193
+
این قضیه بسیار متفاوت با نحوهٔ برنچسازی بیشتر ابزارهای VCS قدیمی است که شامل کپی کردن تمام فایلهای پروژه به یک پوشه ثانوی میباشد.
194
194
این میتواند چندین ثانیه یا حتی دقیقه، بسته به سایز پروژه، طول بکشد؛ درحالی که در گیت این فرآیند همیشه آنی است.
195
-
همچنین به علت اینکه هنگامی که کامیت میکنیم والد را هم در کامیت ثبت میکنیم، پیدا کردن یک پایهٔ ادغام برای مرج کردن به صورت خودکار برای ما انجام میشود و به طور کل به سهولت انجام میپذیرد.
196
-
معمولاً مزایا توسعهدهندگان را به ساختن و استفاده از برنچها مشتاق میکند.
195
+
همچنین به علت اینکه هنگامی که کامیت میکنیم والد را هم در کامیت ثبت میکنیم، پیدا کردن یک پایهٔ ادغام برای مرج کردن به صورت خودکار برای ما انجام میشود و به طور کل انجام آن بسیار آسان است.
196
+
این مزایا توسعهدهندگان را به ساختن و استفاده بیشتر از برنچها مشتاق میکند.
197
197
198
-
بیایید به اینکه چرا باید شما هم از این کار را کنید نگاهی بیاندازیم.
198
+
بیایید به اینکه چرا شما نیز باید این کار را کنید نگاهی بیاندازیم.
199
199
200
200
[NOTE]
201
201
.ساختن یک برنچ جدید و انتقال به آن در آن واحد
202
202
====
203
-
خیلی اوقات پیش میآید که یک برنچ جدید بسازید و در آن واحد بخواهید به آن انتقال یابید -- این کار در یک عملیات با `git checkout -b <newbranchname>` قابل انجام است.
203
+
خیلی اوقات پیش میآید که یک برنچ جدید بسازید و بخواهید در آن واحد به آن انتقال یابید -- این کار در یک عملیات با `git checkout -b <newbranchname>` قابل انجام است.
0 commit comments