45 | أنشئ مجلدًا جديدًا، ادخل إليه ثم قم بتنفيذ الأمر
46 | git init
47 | لإنشاء مستودع Git جديد.
48 |
49 |
50 |
51 |
52 |
استنساخ مستودع موجود
53 |
54 | أنشئ نسخة عمل من مستودع محلي عبر تنفيذ الأمر التالي
55 | git clone /المسار/إلى/المستودع
56 | في حال تواجد المستودع على خادوم بعيد، فعدّل على الأمر ليُصبح على الشكل التالي:
57 | git clone المسار/إلى/المستودع/:المضيف@اسم_المستخدم
58 |
59 |
60 |
61 |
62 |
سير العمل
63 |
64 | مُستودعك المحلّي عبارة عن ثلاث "شجرات" يعتني بها Git.
65 | الشجرة الأولى هي الـ Working Directory أي مجلّد العمل والتي تحتوي الملفات الحالية.
66 | أما الثانية فهي الـ Index أي الفهرس، والتي تلعب دور منطقة الإدراج (staging area) والأخيرة هي الـ
67 | HEAD -أو الرأس- والتي يشير إلى آخر إيداع "commit" قمت به.
68 |
69 |
70 |
71 |
72 |
73 |
الإضافة والإيداع
74 |
75 | يُمكنك إقرار التغيّرات (إضافتها إلى الفهرس Index) بأحد الأمرين التاليين:
76 | <اسم_الملف> git add
77 | git add *
78 | هذه أوّل خطوة قاعدية لدى استخدامك لـ Git. لإيداع هذه التغيّرات استعمل الأمر
79 | git commit -m "وصف الإيداع"
80 | والذي يقوم بإيداع الملف إلى الـ HEAD، لكن دون أن يدفعه إلى الخادوم البعيد.
81 |
82 |
83 |
84 |
85 |
دفع التغيّرات
86 |
87 | التغيّرات التي أحدثتها متواجدة على مستوى الرأس HEAD الخاص بالنسخة المحلية للمستودع. لإرسال هذه التغيّرات إلى المستودع الموجود على الخادوم، نفذّ
88 | git push origin master
89 | غيّر master إلى اسم الفرع الذي تريد دفع التغيّرات إليه.
90 |
91 | إذا لم تكن قد استنسخت مستودعًا موجودًا من قبل وتريد وَصْل مستودعك المحلي بخادوم بعيد فعليك إضافته بالأمر التالي:
92 |
93 | git remote add origin <الخادم>
94 | يمكنك الآن دفع التغيّرات إلى الخادوم البعيد الذي عيّنته.
95 |
96 |
97 |
98 |
99 |
100 |
التفريع
101 |
102 | تُستعمَل الفروع لتطوير وظائف أو ميزات للمشروع في معزل عن بعضها البعض.
103 | الـ master -أو الرئيسي- هو الفرع "الافتراضي" الذي يتم تعيينه عند إنشائك للمستودع.
104 | استعمل فروعا أخرى لدى التطوير، ثم حين تفرغ من الأمر، قم بدمج التغيّرات الخاصة بها مع الفرع الرئيسي master.
105 |
106 |
107 |
108 | أنشئ فرعًا جديدا باسم "feature_x" ثم انتقل للعمل عليه بتنفيذ:
109 | git checkout -b feature_x
110 | للرجوع إلى master
111 | git checkout master
112 | لحذف الفرع (بعد دمجه مثلا) نفّذ:
113 | git branch -d feature_x
114 | لا يمكن لغيرك الوصول إلى الفروع التي قمت بإنشائها ما لم تقم بدفعها إلى مستودع على الخادوم عبر:
115 | git push origin <اسم_الفرع>
116 |
117 |
118 |
119 |
120 |
الدمج والتحديث
121 |
122 | لتحديث مستودعك المحلي والحصول على آخر ما تم إيداعه، نفّذ
123 |
124 | git pull
125 | في مجلد العمل لكي يتم جلب ودمج التغيرات من الخادوم البعيد.
126 | أما لدمج فرع مع الفرع الذي تتواجد فيه حاليا (كالـ master مثلا)، نفّذ:
127 |
128 | git merge <اسم_الفرع>
129 | في كلتا الحالتين، سيحاول git أن يدمج التغيّرات تلقائيا. للأسف لا ينجح الأمر دائما حيث يُحتمل أن تنتج عنه تضاربات أو
130 | conflicts. وتقع مهمة دمج هذه التضاربات يدويا على عاتقك، وذلك عبر تحرير الملفات التي يشير عليها git.
131 | بعد حلِّ التضاربات، يتوجب عليك تعليما كـ "مُدمجة" أو merged وذلك بتنفيذ:
132 |
133 | git add <اسم_الملف>
134 | بإمكانك معاينة التغيّرات قبل دمجها باستخدام الأمر:
135 |
136 | git diff <الفرع_المستهدف> <الفرع_المصدر>
137 |
138 |
139 |
140 |
141 |
(tagging) التوسيم
142 |
143 | من المُحبذ ومن المتعارف عليه إنشاء أوسمة tags لتعليم إصدارات البرامج، وهو أمر مُتعارف عليه ومُستخدم أيضا مع نظام SVN. يمكنك إنشاء وسم جديد يحمل الاسم 1.0.0 عبر تنفيذ
144 |
145 | git tag 1.0.0 1b2e1d63ff
146 | حيث تُمثل 1b2e1d63ff أول عشرة محارف من رقم تعريف الإيداع الذي تريد توسيمه. يمكنك الحصول على هذا المُعرّف عبر تنفيذ
147 | git log
148 | يمكنك استعمال عدد أقل من المحارف في المُعرف، لكن يجب عليه أن يكون فريدا.
149 |
150 |
151 |
152 |
153 |
استبدال التغيّرات المحلية
154 |
155 | في حال ما إذا ارتكبت خطأ(طبعا هذا لن يحدث ;)) يمكنك استبدال التغيّرات المحلية بالأمر
156 |
157 | git checkout -- <اسم_الملف>
158 | والذي يقوم باستبدال التغيّرات في شجرة العمل بأحدث محتوى في الـ HEAD. ستتم المحافظة على جميع التغيّرات التي تم إضافتها مسبقا إلى الفهرس Index، إضافة إلى الملفات الجديدة.
159 |
160 |
161 | أما إذا كنت تريد التخلي عن جميع الإيداعات وتغييراتك المحلية، وترغب عوض ذلك في جلب أحدث تاريخ من الخادوم والتأشير على فرع الـ master فيه، فقم بتنفيذ
162 |
163 | git fetch origin
164 | git reset --hard origin/master
165 |
166 |
167 |
168 |
169 |
تلميحات مفيدة
170 |
171 | واجهة رسومية مدمجة لـ git
172 | gitk
173 | تلوين مخرجات git
174 | git config color.ui true
175 | عرض كل إيداع في سطر واحد في السّجل (log)
176 |
177 | git config format.pretty oneline
178 | جعل عملية الإضافة تفاعلية
179 |
180 | git add -i
181 |
45 | أنشئ مجلدًا جديدًا، ادخل إليه ثم قم بتنفيذ الأمر
46 | git init
47 | لإنشاء مستودع Git جديد.
48 |
49 |
50 |
51 |
52 |
استنساخ مستودع موجود
53 |
54 | أنشئ نسخة عمل من مستودع محلي عبر تنفيذ الأمر التالي
55 | git clone /المسار/إلى/المستودع
56 | في حال وجود المستودع على خادوم بعيد، عَدّل على الأمر ليُصبح على الشكل التالي:
57 | git clone المسار/إلى/المستودع/:المضيف@اسم_المستخدم
58 |
59 |
60 |
61 |
62 |
سير العمل
63 |
64 | مُستودعك المحلّي عبارة عن ثلاث «شجرات» يعتني بها Git.
65 | الشجرة الأولى هي الـ Working Directory أي مجلّد العمل والتي تحتوي الملفات الحالية.
66 | أما الثانية فهي الـ Index أي الفهرس، والتي تلعب دور منطقة الإدراج (staging area) والأخيرة هي الـ
67 | HEAD -أو الرأس- والتي يشير إلى آخر إيداع "commit" قمت به.
68 |
69 |
70 |
71 |
72 |
73 |
الإضافة والإيداع
74 |
75 | يُمكنك إقرار التغيّرات (إضافتها إلى الفهرس Index) بأحد الأمرين التاليين:
76 | <اسم_الملف> git add
77 | git add *
78 | هذه أوّل خطوة قاعدية لدى استخدامك لـ Git. لإيداع هذه التغيّرات استعمل الأمر
79 | git commit -m "وصف الإيداع"
80 | والذي يقوم بإيداع الملف إلى الـ HEAD، لكن دون أن يدفعه إلى الخادوم البعيد.
81 |
82 |
83 |
84 |
85 |
دفع التغيّرات
86 |
87 | التغيّرات التي أحدثتها موجودة على مستوى الرأس HEAD الخاص بالنسخة المحلية للمستودع. لإرسال هذه التغيّرات إلى المستودع الموجود على الخادوم، نفذّ
88 | git push origin master
89 | غيّر master إلى اسم الفرع الذي تريد دفع التغيّرات إليه.
90 |
91 | إذا لم تكن قد استنسخت مستودعًا موجودًا من قبل وتريد وَصْل مستودعك المحلي بخادوم بعيد فعليك إضافته بالأمر التالي:
92 |
93 | git remote add origin <الخادم>
94 | يمكنك الآن دفع التغيّرات إلى الخادوم البعيد الذي عيّنته.
95 |
96 |
97 |
98 |
99 |
100 |
التفريع
101 |
102 | تُستعمَل الفروع لتطوير وظائف أو ميزات للمشروع في معزل عن بعضها البعض.
103 | الـ master -أو الرئيسي- هو الفرع "الافتراضي" الذي يتم تعيينه عند إنشائك للمستودع.
104 | استعمل فروعا أخرى لدى التطوير، ثم حين تفرغ من الأمر، قم بدمج التغيّرات الخاصة بها مع الفرع الرئيسي master.
105 |
106 |
107 |
108 | أنشئ فرعًا جديدا باسم "feature_x" ثم انتقل للعمل عليه بتنفيذ:
109 | git checkout -b feature_x
110 | للرجوع إلى master
111 | git checkout master
112 | لحذف الفرع (بعد دمجه مثلا) نفّذ:
113 | git branch -d feature_x
114 | لا يمكن لغيرك الوصول إلى الفروع التي قمت بإنشائها ما لم تقم بدفعها إلى مستودع على الخادوم عبر:
115 | git push origin <اسم_الفرع>
116 |
117 |
118 |
119 |
120 |
الدمج والتحديث
121 |
122 | لتحديث مستودعك المحلي والحصول على آخر ما تم إيداعه، نفّذ
123 |
124 | git pull
125 | في مجلد العمل لكي يتم جلب ودمج التغيرات من الخادوم البعيد.
126 | أما لدمج فرع مع الفرع الذي تتواجد فيه حاليا (كالـ master مثلا)، نفّذ:
127 |
128 | git merge <اسم_الفرع>
129 | في كلتا الحالتين، سيحاول git أن يدمج التغيّرات تلقائيا. للأسف لا ينجح الأمر دائما حيث يُحتمل أن تنتج عنه تضاربات أو
130 | conflicts. وتقع مهمة دمج هذه التضاربات يدويا على عاتقك، وذلك عبر تحرير الملفات التي يشير عليها git.
131 | بعد حلِّ التضاربات، يتوجب عليك تعليما كـ "مُدمجة" أو merged وذلك بتنفيذ:
132 |
133 | git add <اسم_الملف>
134 | بإمكانك معاينة التغيّرات قبل دمجها باستخدام الأمر:
135 |
136 | git diff <الفرع_المستهدف> <الفرع_المصدر>
137 |
138 |
139 |
140 |
141 |
(tagging) التوسيم
142 |
143 | من المُحبذ ومن المتعارف عليه إنشاء أوسمة tags لتعليم إصدارات البرامج، وهو أمر مُتعارف عليه ومُستخدم أيضا مع نظام SVN. يمكنك إنشاء وسم جديد يحمل الاسم 1.0.0 عبر تنفيذ
144 |
145 | git tag 1.0.0 1b2e1d63ff
146 | حيث تُمثل 1b2e1d63ff أول عشرة محارف من رقم تعريف الإيداع الذي تريد توسيمه. يمكنك الحصول على هذا المُعرّف عبر تنفيذ
147 | git log
148 | يمكنك استعمال عدد أقل من المحارف في المُعرف، لكن يجب عليه أن يكون فريدا.
149 |
150 |
151 |
152 |
153 |
استبدال التغيّرات المحلية
154 |
155 | في حال ما إذا ارتكبت خطأ(طبعا هذا لن يحدث ;)) يمكنك استبدال التغيّرات المحلية بالأمر
156 |
157 | git checkout -- <اسم_الملف>
158 | والذي يقوم باستبدال التغيّرات في شجرة العمل بأحدث محتوى في الـ HEAD. ستتم المحافظة على جميع التغيّرات التي تم إضافتها مسبقا إلى الفهرس Index، إضافة إلى الملفات الجديدة.
159 |
160 |
161 | أما إذا كنت تريد التخلي عن جميع الإيداعات وتغييراتك المحلية، وترغب عوض ذلك في جلب أحدث تاريخ من الخادوم والتأشير على فرع الـ master فيه، فقم بتنفيذ
162 |
163 | git fetch origin
164 | git reset --hard origin/master
165 |
166 |
167 |
168 |
169 |
تلميحات مفيدة
170 |
171 | واجهة رسومية مدمجة لـ git
172 | gitk
173 | تلوين مخرجات git
174 | git config color.ui true
175 | عرض كل إيداع في سطر واحد في السّجل (log)
176 |
177 | git config format.pretty oneline
178 | جعل عملية الإضافة تفاعلية
179 |
180 | git add -i
181 |
التعليقات
214 | 215 | 226 | 227 |