forked from rogerdudler/git-guide
-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.html
253 lines (251 loc) · 16.4 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>راهنمای سادۀ گیت (git)</title>
<link href='http://fonts.googleapis.com/css?family=Chelsea+Market' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/normalize/0/normalize.min.css" type="text/css">
<link rel="stylesheet" href="css/style.css" type="text/css">
<link type="text/css" rel="stylesheet" href="https://cdn.rawgit.com/rastikerdar/vazir-font/v15.0.0/dist/font-face.css">
<style type="text/css">
/* Persian specific font information */
h1,h2,h3,p,a{
font-family: 'Vazir';
direction: rtl;
}
code {
font-family: menlo, monospace !important;
}
</style>
</head>
<body>
<div class="scrollblock block-title">
<h1>راهنمای سادۀ گیت (git)</h1>
<p>مقدمهای برای شروع کار با گیت</p>
<a href="https://twitter.com/share" class="twitter-share-button" data-via="hamed" data-size="large" data-url="https://git-guide.hamed.blog" data-related="hamed" data-hashtags="git">توییت</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
<p class="meta">
توسط <a href="https://twitter.com/rogerdudler">Roger Dudler</a>
<br />با تشکر از <a href="https://twitter.com/tfnico"><span dir="ltr">@tfnico</span></a>، <a href="https://twitter.com/fhd" ><span dir="ltr">@fhd</span></a> و <a href="http://www.namics.com">Namics</a><br />
ترجمه فارسی توسط <a href="https://twitter.com/hamed"><span dir="ltr">@hamed</span></a>
<br />سپاس از آقای راستی کردار <a href="https://twitter.com/rastikerdar"><span dir="ltr">@rastikerdar</span></a> بابتِ فونت زیبای <a href="http://rastikerdar.github.io/vazir-font/">وزیر</a><br />
نمایش این راهنما به زبانِ
<a href="index.en.html">english</a>،
<a href="index.de.html">deutsch</a>،
<a href="index.es.html">español</a>،
<a href="index.fr.html">français</a>،
<a href="index.id.html">indonesian</a>،
<a href="index.it.html">italiano</a>،
<a href="index.nl.html">nederlands</a>،
<a href="index.pl.html">polski</a>،
<a href="index.pt_BR.html">português</a>،
<a href="index.ru.html">русский</a>،
<a href="index.tr.html">türkçe</a>،
<br/>
<a href="index.my.html">မြန်မာ</a>،
<a href="index.ja.html">日本語</a>،
<a href="index.zh.html">中文</a>،
<a href="index.ko.html">한국어</a>،
<a href="index.vi.html">Vietnamese</a>،
<a href="index.html">فارسی</a>
<br />
لطفاً مشکلات ترجمه فارسی را در <a href="https://github.com/hameds/git-guide/issues">گیتهاب</a> گزارش دهید
</p>
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=gitguide" id="_carbonads_js"></script>
<img src="img/arrow.png" alt="" />
</div>
<!-- setup -->
<a name="setup"></a>
<div class="scrollblock block-setup">
<h2>نصب</h2>
<p>
<a href="http://git-scm.com/download/mac">دانلود گیت برای مک</a>
</p>
<p>
<a href="https://git-scm.com/download/win">دانلود گیت برای ویندوز</a>
</p>
<p>
<a href="https://git-scm.com/download/linux">دانلود گیت برای لینوکس</a>
</p>
</div>
<a name="create"></a>
<div class="scrollblock block-create">
<h2>ساخت مخزن جدید</h2>
<p>
پوشۀ جدیدی بسازید؛ واردش شوید و دستورِ <br />
<code dir="ltr">git init</code><br />
را اجرا کنید تا یک مخزن جدید (Git Repository) ساخته شود.
</p>
</div>
<a name="checkout"></a>
<div class="scrollblock block-checkout">
<h2>دریافت مخزن (Checkout) </h2>
<p>
با اجرای دستور زیر میتوانید یک نسخۀ کپی از مخزن محلی ایجاد کنید<br />
کپی یا کلون: <code dir="ltr">git clone /path/to/repository</code><br />
برای کپیِ مخزنی که در سرور قرار گرفته دستور پایین را اجرا کنید:<br />
<code dir="ltr">git clone username@host:/path/to/repository</code>
</p>
</div>
<a name="trees"></a>
<div class="scrollblock block-trees">
<h2>گردش کار (Workflow) </h2>
<p>
مخزن محلی شامل سه «درخت» است که توسط گیت نگهداری میشود:
اولی <code dir="ltr">Working Directory</code> است که مسئول نگهداری فایلهای واقعی پروژه است؛
دومی ایندکس <code dir="ltr">(Index)</code> است که نقش منطقه شروع عملیات (Staging area) را بازی میکند؛
و آخری هِد <code dir="ltr">(HEAD)</code> که به آخرین کامیتِ ارسالی (commit) اشاره میکند.
</p>
<img src="img/trees.png" alt="" />
</div>
<a name="add"></a>
<div class="scrollblock block-add">
<h2>اضافه کردن و کامیت</h2>
<p>
میتوانید با دستور زیر فایلها را به ایندکس اضافه کنید:<br />
<code dir="ltr">git add <filename></code><br />
<code dir="ltr">git add *</code><br />
این اولین قدمِ یک گردش کار ساده در گیت محسوب میشود. برای ارسال واقعی تغییرات از دستور پایین استفاده کنید:<br />
<code dir="ltr">git commit -m "Commit message"</code><br />
اکنون فایلهای مورد نظر در هِد قرار گرفتهاند؛ ولی هنوز به سرور ارسال نشدهاند.
</p>
</div>
<a name="push"></a>
<div class="scrollblock block-remote">
<h2>ارسال تغییرات (Push)</h2>
<p>
برای ارسال تغییرات به سرورِ ریموت دستور زیر را اجرا کنید: <br />
<code dir="ltr">git push origin master</code><br />
به جای مَستر <i>(master)</i>، اسم شاخهای (branch) را وارد کنید که میخواهید تغییراتش را ارسال کنید.
<br /><br />
اگر هیچ مخزن محلیای را کلون نکرده بودید میتوانید با دستور پایین مخزن محلیتان را به مخزن ریموت متصل کنید:<br />
<code dir="ltr">git remote add origin <server></code><br />
حالا میتوانید تغییرات را به کمک ریموت ساخته شده به سرور ارسال نمایید.<br />
</p>
</div>
<a name="branching"></a>
<div class="scrollblock block-branching">
<h2>شاخهبندی (Branching)</h2>
<p>
شاخهها برای افزودن فیچرهای جدید در مسیری مجزا به کار میروند. هنگام ساخت یک مخزن جدید، شاخۀ مستر به عنوان شاخۀ پیشفرض در نظر گرفته میشود. هر شاخه به صورت مجزا توسعه مییابد و بعد از اتمام کار با شاخۀ مستر ترکیب میشود.
</p>
<img src="img/branches.png" alt="" />
<p>
با دستور زیر شاخهای به نام "feature_x" ساخته شده و به آن سوئیچ میشود:<br />
<code dir="ltr">git checkout -b feature_x</code><br />
بازگشت به شاخۀ مستر:<br />
<code dir="ltr">git checkout master</code><br />
حذف شاخه:<br />
<code dir="ltr">git branch -d feature_x</code><br />
تا زمانی که شاخهای را به سرور پوش نکنید، سایر افراد به آن دسترسی ندارند.
<code dir="ltr">git push origin <branch></code>
</p>
</div>
<a name="update"></a>
<div class="scrollblock block-merging">
<h2>بروزرسانی و ادغام</h2>
<p>
برای اینکه مخزن محلی خود را به آخرین کامیت بروز کنید، دستور <br />
<code dir="ltr">git pull</code><br />
را در پوشه محلی (فولدر پروژه روی سیستمتان) اجرا کنید تا تغییرات مخزن ریموت (واقع روی سرور)، <br><i>دریافت (fetch)</i> و <i>ادغام (merge)</i> شوند. برای ادغام یک شاخۀ دیگر با شاخۀ کنونی (مثلاً master)، از دستور زیر استفاده کنید:<br />
<code dir="ltr">git merge <branch></code><br />
گیت در هر دو حال تلاش میکند تغییرات را به صورت خودکار ادغام کند ولی این کار همیشه میسر نیست چون ممکن است به <i>تداخل (conflict)</i> منجر شود.
تداخلها را باید خودتان به صورتی دستی برطرف نمایید و سپس عمل ادغام را انجام دهید. پس از ویرایش باید با دستور زیر، آنها را به عنوان «ادغام شده» علامت بزنید:<br />
<code dir="ltr">git add <filename></code><br />
قبل از ادغام تغییرات، پیشنمایش آن را میتوانید با دستور زیر ببینید<br />
<code dir="ltr">git diff <source_branch> <target_branch></code>
</p>
</div>
<a name="tagging"></a>
<div class="scrollblock block-tagging">
<h2>برچسبگذاری</h2>
<p>
معمولاً به هر نسخه از برنامه، شمارهای اختصاص میدهند که در گیت به آن تگ گفته میشود. این موضوع در سایر سیستمهای کنترل نسخه مانند سابورژن (SVN) نیز وجود دارد.
<br>
میتوانید با دستور زیر برچسبی به نام <i>1.0.0</i> بسازید:<br />
<code dir="ltr">git tag 1.0.0 1b2e1d63ff</code><br />
عبارت <i>1b2e1d63ff</i>، اولین ده کاراکتر شناسۀ (ID) کامیتی است که میخواهید برچسبگذاری کنید. میتوانید شناسه کامیت را با جستجو در لاگ پیدا کنید... <br />
</p>
</div>
<a name="log"></a>
<div class="scrollblock block-log">
<h2>لاگ</h2>
<p>
در سادهترین حالت، تاریخچه مخزن با دستور زیر نمایش داده میشود:<br/>
<code dir="ltr">git log</code><br />
میتوانید کلی پارامتر دیگر هم به این دستور اضافه کنید تا بشود آن چیزی که میخواهید. دیدن کامیتهای یک شخص خاص:<br />
<code dir="ltr">git log --author=bob</code><br />
دیدن کامیتها به صورت مختصر؛ هر کدام در یک خط:<br />
<code dir="ltr">git log --pretty=oneline</code><br />
یا شاید بخواهید درخت اسکی (ASCII) همه شاخهها را که با نام شاخه و برچسبها تزئین شده ببینید: <br />
<code dir="ltr">git log --graph --oneline --decorate --all</code><br />
فقط مشاهدۀ فایلهای تغییر یافته: <br />
<code dir="ltr">git log --name-status</code><br />
موارد بالا فقط گوشهای از پارامترها بودند. برای اطلاعات بیشتر، دستور پایین را وارد کنید: <br/>
<code dir="ltr">git log --help</code><br />
</p>
</div>
<a name="checkout-replace"></a>
<div class="scrollblock block-checkout-replace">
<h2>جایگزین کردن تغییرات محلی</h2>
<p>
در صورتی که مرتکب اشتباهی شدید، تغییرات محلی را میتوانید با دستور پایین جایگزین کنید:<br />
<code dir="ltr">git checkout -- <filename></code><br />
این دستور، تغییرات working directory (فولدر پروژه روی سیستم) را با آخرین محتوایی که هِد به آن اشاره میکند جایگزین میکند. البته فایلهای جدید و تغییراتی که از قبل به ایندکس اضافه شده، دست نخورده باقی میمانند.
</p>
<p>
اگر میخواهید همه تغییرات محلی را حذف و بعد کامیت کنید، آخرین تاریخچه را از سرور دریافت و با دستور ریست (با پرچم hard--) شاخه مستر را به آخرین تغییرات دریافتی از سرور اشاره دهید.
<br />
<code dir="ltr">git fetch origin</code><br />
<code dir="ltr">git reset --hard origin/master</code>
</p>
</div>
<a name="hints"></a>
<div class="scrollblock block-hints">
<h2>نکات مفید</h2>
<p>
رابط گرافیکی گیت git:<br />
<code dir="ltr">gitk</code><br />
نمایش خروجی دستورات به صورت رنگی: <br />
<code dir="ltr">git config color.ui true</code><br />
نمایش مختصر لاگ، تنها یک کامیت در هر سطر:<br />
<code dir="ltr">git config format.pretty oneline</code><br />
افزودن فایلها به صورت تعاملی:<br />
<code dir="ltr">git add -i</code>
</p>
</div>
<a name="resources"></a>
<div class="scrollblock block-resources">
<h2>منابع و پیوندها</h2>
<h3>کلاینتهای گرافیکی گیت</h3>
<p>
<ul>
<li><a href="http://gitx.laullon.com/">GitX (L) (OSX, open source)</a></li>
<li><a href="http://www.git-tower.com/">Tower (OSX)</a></li>
<li><a href="http://www.sourcetreeapp.com/">Source Tree (OSX & Windows, free)</a></li>
<li><a href="http://mac.github.com/">GitHub for Mac (OSX, free)</a></li>
<li><a href="https://itunes.apple.com/gb/app/gitbox/id403388357?mt=12">GitBox (OSX, App Store)</a></li>
</ul>
</p>
<h3>آموزشِ گیت</h3>
<p>
<ul>
<li><a href="http://book.git-scm.com/">Git Community Book (جامعۀ گیت)</a></li>
<li><a href="http://progit.org/book/">Pro Git (گیت پیشرفته)</a></li>
<li><a href="http://think-like-a-git.net/">Think like a git (مثل گیت فکر کنید)</a></li>
<li><a href="http://help.github.com/">GitHub Help (راهنمای گیتهاب)</a></li>
<li><a href="http://marklodato.github.com/visual-git-guide/index-en.html">A Visual Git Guide (راهنمای تصویری گیت)</a></li>
</ul>
</p>
<h3>درخواست کمک</h3>
<p>
<ul>
<li><a href="http://groups.google.com/group/git-users/">Git User Mailing List (لیست ایمیلی گیت)</a></li>
<li><a href="http://jk.gs/git/">#git on irc.freenode.net</a></li>
</ul>
</p>
</div>
<a href="files/git_cheat_sheet.pdf" onClick="recordOutboundLink(this, 'Cheat Sheet', 'git-guide');return false;" class="cheatsheet"></a>
</body>
</html>