forked from arabicgit/simple-guide
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
242 lines (236 loc) · 14.2 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
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<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="css/normalize.css" type="text/css">
<link rel="stylesheet" href="css/style.css" type="text/css">
<link rel="stylesheet" href="css/arabic.css" type="text/css">
</head>
<body>
<div class="scrollblock block-title">
<h1>git - الدّليل البسيط</h1>
<p>مجرّد دليل بسيط لمباشرة العمل بـ Git بدون وجع الرأس ;)</p>
<a href="https://twitter.com/share" class="twitter-share-button" data-via="arabicgit" data-size="large" data-url="http://www.arabicgit.com/simple-guide/" data-related="rogerdudler" data-hashtags="git">Tweet</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="http://www.twitter.com/rogerdudler">Roger Dudler</a>
<br />
ترجمه إلى العربية <a href="https://twitter.com/01walid">وليد زيوش</a>
<br />
يُرجى التبليغ عن الأخطاء على <a href="https://github.com/rogerdudler/git-guide/issues">github</a>
</p>
<img src="img/arrow.png" alt="" />
</div>
<!-- setup -->
<a name="setup"></a>
<div class="scrollblock block-setup">
<h2>التّثبيت</h2>
<p>
<a href="http://code.google.com/p/git-osx-installer/downloads/list?can=3">حمّل Git لنظام OSX</a>
</p>
<p>
<a href="http://code.google.com/p/msysgit/downloads/list?can=3">حمّل Git لنظام Windows</a>
</p>
<p>
<a href="http://book.git-scm.com/2_installing_git.html">حمّل Git لنظام لينكس</a>
</p>
</div>
<a name="create"></a>
<div class="scrollblock block-create">
<h2>أنشئ مستودعًا جديدًا</h2>
<p>
أنشئ مجلدًا جديدًا، ادخل إليه ثم قم بتنفيذ الأمر <br />
<code>git init</code><br />
لإنشاء مستودع Git جديد.
</p>
</div>
<a name="checkout"></a>
<div class="scrollblock block-checkout">
<h2>استنساخ مستودع موجود</h2>
<p>
أنشئ نسخة عمل من مستودع محلي عبر تنفيذ الأمر التالي<br />
<code dir="ltr">git clone /المسار/إلى/المستودع</code><br />
في حال تواجد المستودع على خادوم بعيد، فعدّل على الأمر ليُصبح على الشكل التالي:<br />
<code dir="ltr">git clone المسار/إلى/المستودع/:المضيف@اسم_المستخدم</code>
</p>
</div>
<a name="trees"></a>
<div class="scrollblock block-trees">
<h2>سير العمل</h2>
<p>
مُستودعك المحلّي عبارة عن ثلاث "شجرات" يعتني بها Git.
الشجرة الأولى هي الـ <code>Working Directory</code> أي مجلّد العمل والتي تحتوي الملفات الحالية.
أما الثانية فهي الـ <code>Index</code> أي الفهرس، والتي تلعب دور منطقة الإدراج (staging area) والأخيرة هي الـ
<code>HEAD</code> -أو الرأس- والتي يشير إلى آخر إيداع "commit" قمت به.
</p>
<img src="img/trees.png" alt="" />
</div>
<a name="add"></a>
<div class="scrollblock block-add">
<h2>الإضافة والإيداع</h2>
<p>
يُمكنك إقرار التغيّرات (إضافتها إلى الفهرس <b>Index</b>) بأحد الأمرين التاليين:<br />
<code><اسم_الملف> git add </code><br />
<code dir="ltr">git add *</code><br />
هذه أوّل خطوة قاعدية لدى استخدامك لـ Git. لإيداع هذه التغيّرات استعمل الأمر <br />
<code dir="ltr">git commit -m "وصف الإيداع"</code><br />
والذي يقوم بإيداع الملف إلى الـ <b>HEAD</b>، لكن دون أن يدفعه إلى الخادوم البعيد.
</p>
</div>
<a name="push"></a>
<div class="scrollblock block-remote">
<h2>دفع التغيّرات</h2>
<p>
التغيّرات التي أحدثتها متواجدة على مستوى الرأس <b>HEAD</b> الخاص بالنسخة المحلية للمستودع. لإرسال هذه التغيّرات إلى المستودع الموجود على الخادوم، نفذّ <br />
<code dir="ltr">git push origin master</code><br />
غيّر <i>master</i> إلى اسم الفرع الذي تريد دفع التغيّرات إليه.
<br /><br />
إذا لم تكن قد استنسخت مستودعًا موجودًا من قبل وتريد وَصْل مستودعك المحلي بخادوم بعيد فعليك إضافته بالأمر التالي:
<br />
<code dir="ltr">git remote add origin <الخادم></code><br />
يمكنك الآن دفع التغيّرات إلى الخادوم البعيد الذي عيّنته.<br />
</p>
</div>
<a name="branching"></a>
<div class="scrollblock block-branching">
<h2>التفريع</h2>
<p>
تُستعمَل الفروع لتطوير وظائف أو ميزات للمشروع في معزل عن بعضها البعض.
الـ <i>master</i> -أو الرئيسي- هو الفرع "الافتراضي" الذي يتم تعيينه عند إنشائك للمستودع.
استعمل فروعا أخرى لدى التطوير، ثم حين تفرغ من الأمر، قم بدمج التغيّرات الخاصة بها مع الفرع الرئيسي <i>master</i>.
</p>
<img src="img/branches.png" alt="" />
<p>
أنشئ فرعًا جديدا باسم "feature_x" ثم انتقل للعمل عليه بتنفيذ:<br />
<code dir="ltr">git checkout -b feature_x</code><br />
للرجوع إلى master<br />
<code dir="ltr">git checkout master</code><br />
لحذف الفرع (بعد دمجه مثلا) نفّذ:<br />
<code dir="ltr">git branch -d feature_x</code><br />
لا يمكن لغيرك الوصول إلى الفروع التي قمت بإنشائها ما لم تقم بدفعها إلى مستودع على الخادوم عبر:<br />
<code dir="ltr">git push origin <اسم_الفرع></code>
</p>
</div>
<a name="update"></a>
<div class="scrollblock block-merging">
<h2>الدمج والتحديث</h2>
<p>
لتحديث مستودعك المحلي والحصول على آخر ما تم إيداعه، نفّذ
<br />
<code>git pull</code><br />
في مجلد العمل لكي يتم <i>جلب</i> و<i>دمج</i> التغيرات من الخادوم البعيد.<br />
أما لدمج فرع مع الفرع الذي تتواجد فيه حاليا (كالـ master مثلا)، نفّذ:
<br />
<code dir="ltr">git merge <اسم_الفرع></code><br />
في كلتا الحالتين، سيحاول git أن يدمج التغيّرات تلقائيا. للأسف لا ينجح الأمر دائما حيث يُحتمل أن تنتج عنه تضاربات أو
<i>conflicts</i>. وتقع مهمة دمج هذه التضاربات يدويا على عاتقك، وذلك عبر تحرير الملفات التي يشير عليها git.
بعد حلِّ التضاربات، يتوجب عليك تعليما كـ "مُدمجة" أو <i>merged</i> وذلك بتنفيذ:
<br />
<code dir="ltr">git add <اسم_الملف></code><br />
بإمكانك معاينة التغيّرات قبل دمجها باستخدام الأمر:
<br />
<code dir="ltr">git diff <الفرع_المستهدف> <الفرع_المصدر></code>
</p>
</div>
<a name="tagging"></a>
<div class="scrollblock block-tagging">
<h2>(tagging) التوسيم</h2>
<p>
من المُحبذ ومن المتعارف عليه إنشاء أوسمة <i>tags</i> لتعليم إصدارات البرامج، وهو أمر مُتعارف عليه ومُستخدم أيضا مع نظام SVN. يمكنك إنشاء وسم جديد يحمل الاسم <i>1.0.0</i> عبر تنفيذ
<br />
<code dir="ltr">git tag 1.0.0 1b2e1d63ff</code><br />
حيث تُمثل <i>1b2e1d63ff</i> أول عشرة محارف من رقم تعريف الإيداع الذي تريد توسيمه. يمكنك الحصول على هذا المُعرّف عبر تنفيذ <br />
<code dir="ltr">git log</code><br />
يمكنك استعمال عدد أقل من المحارف في المُعرف، لكن يجب عليه أن يكون فريدا.
</p>
</div>
<a name="checkout-replace"></a>
<div class="scrollblock block-checkout-replace">
<h2>استبدال التغيّرات المحلية</h2>
<p>
في حال ما إذا ارتكبت خطأ(طبعا هذا لن يحدث ;)) يمكنك استبدال التغيّرات المحلية بالأمر
<br />
<code dir="ltr">git checkout -- <اسم_الملف></code><br />
والذي يقوم باستبدال التغيّرات في شجرة العمل بأحدث محتوى في الـ HEAD. ستتم المحافظة على جميع التغيّرات التي تم إضافتها مسبقا إلى الفهرس Index، إضافة إلى الملفات الجديدة.
</p>
<p>
أما إذا كنت تريد التخلي عن جميع الإيداعات وتغييراتك المحلية، وترغب عوض ذلك في جلب أحدث تاريخ من الخادوم والتأشير على فرع الـ master فيه، فقم بتنفيذ
<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>gitk</code><br />
تلوين مخرجات git <br />
<code>git config color.ui true</code><br />
عرض كل إيداع في سطر واحد في السّجل (log)
<br />
<code>git config format.pretty oneline</code><br />
جعل عملية الإضافة تفاعلية
<br />
<code>git add -i</code>
</p>
</div>
<a name="resources"></a>
<div class="scrollblock block-resources">
<h2>روابط ومصادر</h2>
<h3>واجهات رسومية</h3>
<p>
<ul dir='ltr'>
<li><a href="http://gitx.laullon.com/">GitX (L) (OSX, مفتوح المصدر)</a></li>
<li><a href="http://www.git-tower.com/">Tower (OSX)</a></li>
<li><a href="http://www.sourcetreeapp.com/">Source Tree (Windows, OSX, مجاني)</a></li>
<li><a href="http://windows.github.com/">GitHub for Windows (Windows, مجاني)</a></li>
<li><a href="http://mac.github.com/">GitHub for Mac (OSX, مجاني)</a></li>
<li><a href="https://itunes.apple.com/gb/app/gitbox/id403388357?mt=12">GitBox (OSX, Apple متجر)</a></li>
</ul>
</p>
<h3>مراجع</h3>
<p>
<ul dir="ltr">
<li><a href="http://try.github.io">Try Git</a></li>
<li><a href="http://book.git-scm.com/">Pro Git</a></li>
<li><a href="http://think-like-a-git.net/">Think like a git</a></li>
<li dir="rtl"><a href="http://help.github.com/">مساعدة GitHub</a></li>
<li dir="rtl"><a href="http://marklodato.github.com/visual-git-guide/index-en.html">دليل git المرئي</a></li>
</ul>
</p>
</div>
<div class="announcement">
</div>
<a name="comments"></a>
<div class="scrollblock block-comments">
<h2>التعليقات</h2>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'arabicgit'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</div>
<a href="http://arabicgit.com" class="sticky-button">→ عودة إلى<br /> arabicgit.com</a>
<a href="http://www.arabicgit.com/git-cheat-sheet/" onClick="recordOutboundLink(this, 'Cheat Sheet', 'git-guide');return false;" class="cheatsheet"></a>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-43747671-1', 'arabicgit.com');
ga('send', 'pageview');
</script>
</body>
</html>