دليل

GitHub Desktop: كيف تنزّله وتثبّته وتعمل مع Git دون سطر أوامر

آخر تحديث: · Skillaria.Top

GitHub Desktop برنامج مجاني من GitHub لنظامي Windows وmacOS ينفّذ أوامر Git الأساسية بالأزرار: الاستنساخ وcommit وpush وpull والفروع ودمج التغييرات وحل التعارضات. نزّله من الموقع الرسمي desktop.github.com، وبعد التثبيت سجّل الدخول إلى حساب GitHub واستنسخ المستودع.

ما هو GitHub Desktop

GitHub Desktop برنامج مجاني ومفتوح المصدر تصدره GitHub لنظامي Windows وmacOS. يعرض الملفات المعدّلة وسجل الـ commits والفروع في نافذة واحدة، وينفّذ أوامر Git الأساسية بنقرات الأزرار. يحتوي البرنامج على نسخة Git مدمجة، لذلك لا تحتاج إلى تثبيت Git منفصل للعمل فيه.

إذا أردنا الإجابة باختصار عن سؤال «ما هو git desktop»: هو واجهة رسومية لـ Git مصممة للعمل مع GitHub. يستطيع استنساخ مستودعاتك بنقرة واحدة، وإنشاء pull request وعرض حالة الفحوصات، لكنه يعمل أيضاً مع أي مستودع بعيد آخر عبر HTTPS، مثل GitLab أو خادم خاص بك.

يناسب GitHub Desktop المبتدئين والمصممين والكتّاب التقنيين وكل من يحتاج إلى دورة واضحة: «عدّل ← سجّل commit ← أرسل». ويستخدمه المطورون ذوو الخبرة لمراجعة الفروقات (diff) بصرياً واختيار أسطر محددة للـ commit، بينما ينفّذون العمليات المعقدة في الطرفية.

كيفية تنزيل GitHub Desktop

عنوان التنزيل الرسمي هو desktop.github.com. يتعرف الموقع على نظامك تلقائياً ويعرض مُثبِّت Windows أو أرشيف macOS. نزّل البرنامج من هذا الموقع أو من صفحة الإصدارات في مستودع desktop/desktop على GitHub فقط، فالنسخ التي تُعرض على مواقع أخرى تحت عبارة «تحميل github desktop مجاناً» قد تحمل أي شيء.

لا توجد نسخة رسمية لنظام Linux. يوجد fork يدعمه المجتمع (المستودع shiftkey/desktop) مع حزم .deb وrpm وAppImage، لكنه غير رسمي. على Linux يُفضَّل العمل في الطرفية أو عبر عميل Git المدمج في محرر النصوص.

التثبيت على Windows

  1. شغّل ملف التثبيت GitHubDesktopSetup الذي نزّلته.
  2. لا يطرح المُثبِّت أي أسئلة: يُثبَّت البرنامج في ملف تعريف المستخدم الحالي (profile) ويفتح مباشرة.
  3. لا تحتاج إلى صلاحيات المسؤول، ويتولى التطبيق تنزيل التحديثات بنفسه.

للتثبيت على أجهزة المؤسسات يوجد مُثبِّت MSI منفصل، وتجده في وثائق GitHub Desktop.

التثبيت على macOS

  1. فكّ ضغط ملف zip الذي نزّلته.
  2. اسحب GitHub Desktop إلى مجلد «Applications» (التطبيقات).
  3. شغّل التطبيق وأكّد فتح برنامج نزّلته من الإنترنت.

توجد نسخ لمعالجات Intel ولمعالجات Apple Silicon، والموقع يقترح عادةً النسخة المناسبة. ويمكن التثبيت أيضاً عبر Homebrew:

brew install --cask github

تسجيل الدخول والإعداد الأول

عند أول تشغيل يطلب GitHub Desktop تسجيل الدخول إلى GitHub.com. اضغط زر الدخول فيفتح المتصفح، وهناك تؤكد منح التطبيق صلاحية الوصول إلى حسابك. لا تُدخل كلمة المرور داخل التطبيق نفسه، والتحقق الثنائي يتم في المتصفح كالمعتاد. وتوجد طريقة دخول منفصلة لخادم GitHub Enterprise الخاص بالمؤسسات.

بعد ذلك يطلب التطبيق إعداد Git: الاسم والبريد الإلكتروني اللذان سيظهران في كل commit. هذه هي القيم نفسها user.name وuser.email التي تُضبط بالأمر git config --global، لذلك إذا كان Git مضبوطاً من قبل فستُملأ البيانات تلقائياً. ولكي تُنسب الـ commits إلى ملفك الشخصي على GitHub، استخدم البريد المضاف إلى حسابك أو العنوان الخاص بالحساب بالصيغة ID+login@users.noreply.github.com.

تُعدَّل هذه الإعدادات لاحقاً من قائمة الإعدادات: على Windows من القائمة File ← Options، وعلى macOS من القائمة GitHub Desktop ← Settings. ومن هناك تختار المحرر الخارجي (مثل VS Code) والطرفية التي تُفتح من التطبيق، وكذلك سمة الألوان.

استنساخ المستودع (Clone)

الاستنساخ يعني تنزيل نسخة من المستودع البعيد مع سجله الكامل. في GitHub Desktop يوجد لذلك الخيار File ← Clone repository. تحتوي النافذة على ثلاثة تبويبات: مستودعاتك على GitHub.com، ومستودعات GitHub Enterprise، وتبويب URL حيث تلصق أي عنوان، بما في ذلك عناوين GitLab.

  1. اختر المستودع من القائمة أو الصق عنوان URL.
  2. حدّد المجلد المحلي (Local path).
  3. اضغط Clone وانتظر حتى ينتهي التنزيل.

يفعل الأمر نفسه git clone. وفي صفحة المستودع على GitHub، يوجد في قائمة الزر Code خيار Open with GitHub Desktop، وهو يفتح التطبيق وعنوان الاستنساخ معبّأ مسبقاً. وإذا استنسخت مستودعاً لشخص آخر لا تملك فيه صلاحية الكتابة، فسيقترح التطبيق عند أول محاولة لإرسال تغييراتك إنشاء fork.

لإضافة مجلد مشروع Git موجود استخدم File ← Add local repository، ولإنشاء مستودع جديد استخدم File ← New repository، ويمكنك حينها اختيار قالب .gitignore ورخصة، وإنشاء ملف README.

كيفية عمل commit في GitHub Desktop

في التبويب Changes تظهر على اليسار كل الملفات المعدّلة، وعلى اليمين الفرق (diff) للملف المختار: الأسطر المحذوفة باللون الأحمر، والمضافة باللون الأخضر. يحدد المربع بجوار الملف هل سيدخل في الـ commit. هذا مكافئ لمنطقة الفهرسة (staging area) والأمر git add.

  1. ألغِ تحديد الملفات التي لا تريد تسجيلها.
  2. عند الحاجة انقر على أسطر محددة في الفرق لاستبعادها، فهكذا يُنفَّذ الـ commit الجزئي، كالأمر git add -p.
  3. اكتب وصفاً قصيراً في الحقل Summary، وتفاصيل اختيارية في Description.
  4. اضغط الزر Commit to <اسم الفرع>.

يُنشأ الـ commit محلياً فقط، ولا يُرسَل إلى الخادم بعد. ومن الأفضل إجراء commits صغيرة وذات معنى، فترى بوضوح ما يدخل في كل منها. وإذا وقع خطأ في الـ commit، يظهر في أسفل الشاشة مباشرةً زر Undo بعد تنفيذه، ويلغي آخر commit ويعيد التغييرات إلى مجلد العمل ما دام لم يُرسَل.

الملفات التي لا يجب أن تدخل المستودع يمكنك استبعادها من القائمة المنبثقة للملف: خيار التجاهل يضيف الملف إلى .gitignore. ولإلغاء تعديلات لم تُسجَّل بعد، توجد في القائمة نفسها الخاصية Discard changes، وتُحذف فيها التغييرات (إلى سلة المحذوفات في Windows وmacOS)، لكن الأفضل اعتبارها إجراءً لا رجعة فيه.

Push وPull وFetch: المزامنة مع الخادم

يغيّر الزر الرئيسي في الشريط العلوي اسمه حسب الحالة. وهنا تُنفَّذ عمليتا git desktop push وgit desktop pull بنقرة واحدة.

نص الزرماذا يحدثأمر Git
Publish repositoryالمستودع المحلي ليس على GitHub بعد: يُنشأ هناك ثم يُرسلإنشاء remote + git push -u
Publish branchالفرع موجود محلياً فقطgit push -u origin اسم-الفرع
Fetch originالتحقق من وجود commits جديدة على الخادمgit fetch
Pull originتوجد commits جديدة على الخادم، اسحبهاgit pull
Push originتوجد commits محلية، أرسلهاgit push

بجوار النص يظهر عدد الـ commits مع سهمين للأعلى والأسفل، أي عدد ما يجب إرساله وعدد ما يجب استلامه. ويُنفّذ التطبيق fetch في الخلفية بشكل دوري، لذلك يظهر زر Pull تلقائياً عندما يرسل زملاؤك تغييرات.

إذا تباعد الفرع عن الخادم، ولدى كليكما commits جديدة، فسيُرفض الـ push. في هذه الحالة نفّذ أولاً Pull origin: يدمج Git التغييرات، وإذا تقاطعت فسيظهر تعارض. ويعرض التطبيق خيار الـ force push (الكتابة فوق السجل) فقط بعد عمليات تغيّر commits أُرسلت سابقاً، مثل rebase.

الفروع: الإنشاء والتبديل وcheckout

تُدار الفروع من القائمة المنسدلة Current branch في الشريط العلوي. تحتوي على قائمة الفروع المحلية والبعيدة، وحقل بحث، وزر New branch. اختيار فرع من القائمة هو git desktop checkout: يبدّل التطبيق مجلد العمل إليه. وإذا اخترت فرعاً بعيداً غير موجود محلياً، فسيُنشأ فرع محلي متتبِّع له تلقائياً.

يُنشأ الفرع الجديد من الفرع الحالي أو من الفرع الافتراضي، ويسألك التطبيق إذا كان هناك خيار. بعد الإنشاء يوجد الفرع عندك وحدك، لذلك يتغير الزر في الأعلى إلى Publish branch. وتتم إعادة التسمية والحذف من القائمة Branch أو من القائمة المنبثقة للفرع في الإطار الجانبي، وعند الحذف يمكنك تحديد حذفه من الخادم أيضاً.

عندما ينتهي العمل في الفرع، توجد في القائمة Branch الخاصية Create pull request، فيفتح المتصفح صفحة إنشاء pull request على GitHub. أما مراجعة الكود والدمج فتجري بعد ذلك على الموقع.

Merge وRebase في GitHub Desktop

لدمج فرع آخر في الفرع الحالي اختر من القائمة Current branch الخيار Choose a branch to merge into <الفرع> (وهو موجود أيضاً في القائمة Branch). يعرض التطبيق مسبقاً عدد الـ commits التي ستُدمج وهل ستظهر تعارضات. وبهذه الطريقة يُنفَّذ git desktop merge، أي الأمر git merge المعتاد.

توجد في القائمة نفسها الخاصية Squash and merge التي تضغط كل commits الفرع في commit واحد، والخاصية Rebase current branch التي تنقل commits الخاصة بك فوق الفرع المختار (git desktop rebase). بعد rebase لفرع أُرسل سابقاً يختلف السجل عندك عنه على الخادم، ويتغير زر Push إلى Force push origin. افعل ذلك فقط في فرعك الخاص الذي لا يعمل عليه أحد غيرك.

في تبويب History يمكنك سحب الـ commits: إلى فرع آخر (وهذا cherry-pick)، أو فوق commit آخر (squash)، أو تغيير ترتيبها. لا يوجد rebase تفاعلي بمجموعة الإجراءات الكاملة، ويلزمه الأمر git rebase -i في الطرفية.

تعارضات الدمج

إذا عُدّلت الأسطر نفسها في الفرعين، فستظهر عند merge أو pull أو rebase نافذة بقائمة الملفات المتعارضة. لكل ملف يمكنك فتحه في محرر خارجي، أو اختيار إحدى النسختين كاملة: نسختك أو النسخة الواردة.

يبدو التعارض في المحرر بالشكل المعتاد:

<<<<<<< HEAD
const limit = 20;
=======
const limit = 50;
>>>>>>> feature/pagination

أبقِ النسخة المطلوبة واحذف العلامات واحفظ الملف. عندما تختفي العلامات من كل الملفات يعلّمها GitHub Desktop كمحلولة ويفعّل زر متابعة الدمج، فينشئ commit للدمج. وإذا سار شيء بشكل خاطئ يمكنك إلغاء الدمج بزر الإلغاء في النافذة نفسها، وهو مكافئ للأمر git merge --abort.

Git stash في GitHub Desktop

لا يوجد زر مستقل باسم «stash» في النافذة الرئيسية، لكن الآلية موجودة. عندما تنتقل إلى فرع آخر وعندك تغييرات غير مسجّلة، يسألك التطبيق عما تريد فعله بها: إبقاؤها في الفرع الحالي أو نقلها إلى الفرع الجديد. خيار «الإبقاء» يخبئ التغييرات في stash، وهكذا يعمل git stash في GitHub Desktop.

يمكنك إخفاء التغييرات يدوياً من القائمة المنبثقة لقائمة التغييرات (الخيار Stash all changes). وعند العودة إلى الفرع ستجد في أسفل تبويب Changes السطر Stashed changes، حيث يمكنك رؤية الملفات المخفية واستعادتها (Restore) أو حذفها.

القيد هنا: يحتفظ GitHub Desktop بمدخل stash واحد لكل فرع. إذا احتجت إلى عدة مدخلات فاستخدم الطرفية، مثل git stash pop مع تحديد مدخل معيّن أو git stash apply stash@{1}. ويمكن للتطبيق أن يفتح الطرفية في المجلد الصحيح من القائمة Repository.

Git LFS في GitHub Desktop

يخزّن Git LFS الملفات الثنائية الكبيرة (الفيديو وملفات PSD والنماذج ثلاثية الأبعاد) على خادم منفصل، ويبقى في المستودع مؤشرات فقط. يدعم GitHub Desktop الـ LFS: عند استنساخ مستودع يستخدمه أو فتحه يقترح تهيئة Git LFS، ثم ينزّل الملفات الكبيرة ويرسلها تلقائياً.

لكن تحديد الملفات التي تُتتبَّع عبر LFS لا يتم من الواجهة. يُفعل ذلك مرة واحدة في الطرفية، وبعدها يعمل git lfs في GitHub Desktop بشفافية:

git lfs install
git lfs track "*.psd"
git add .gitattributes
git commit -m "Track PSD files with Git LFS"

انتبه إلى الحصص: الحسابات المجانية في GitHub لها حدود لمساحة التخزين وحركة LFS، وتجد الحدود الحالية في إعدادات الفوترة للحساب.

Reset وrevert والسجل

يعرض تبويب History الـ commits للفرع الحالي والتغييرات في كل منها. من القائمة المنبثقة للـ commit تتوفر الخيارات التالية:

  • Revert changes in commit — ينشئ commit جديداً يلغي المختار، وهو آمن حتى للـ commits المرسلة.
  • Create branch from commit وCreate tag — فرع أو وسم من أي نقطة في السجل.
  • Amend commit — للـ commit الأخير: لتصحيح الرسالة أو إضافة ملفات.
  • Reset to commit — في الإصدارات الحديثة من التطبيق: يعيد الفرع إلى الـ commit المختار مع الإبقاء على التغييرات في مجلد العمل، كالأمر git reset --mixed.

لا يوجد في الواجهة خيار git desktop reset الذي يحذف التغييرات نهائياً (git reset --hard)، وهذا مقصود حتى لا يفقد المبتدئ عمله. وإذا احتجته فاستخدم الطرفية، وابحث عن الـ commits المفقودة عبر git reflog.

متى يكون سطر الأوامر أفضل

يغطي GitHub Desktop دورة العمل اليومية، لكن كثيراً من الأمور غير متاحة فيه أو غير مريحة:

  • rebase التفاعلي بكل إجراءاته، وgit bisect، وgit reflog، وgit worktree؛
  • عدة مدخلات stash، والـ submodules، والإعداد الدقيق للـ remote؛
  • العمل على خادم عبر SSH، والأتمتة في السكربتات وCI؛
  • Linux، حيث لا توجد نسخة رسمية.

إضافة إلى ذلك، تُسأل في المقابلات الوظيفية عن الأوامر بالتحديد، وفهم ما تفعله fetch وmerge وrebase يساعدك حتى مع الواجهة الرسومية. والنهج العملي هو أن تعرف سطر الأوامر جيداً، وتستخدم التطبيق حيث يوفر الوقت: لعرض الفروقات، وللـ commits الجزئية، ولحل التعارضات. ومن GitHub Desktop تُفتح الطرفية في مجلد المشروع مباشرة من القائمة Repository.

الخلاصة

GitHub Desktop طريقة بسيطة ومجانية للعمل مع Git على Windows وmacOS: حمّله من desktop.github.com، وسجّل الدخول إلى حسابك، واستنسخ المستودع، فتصبح عمليات commit وpush وpull والفروع والتعارضات مجرد أزرار. أما stash وLFS وreset فإمكاناتها محدودة فيه، وتبقى العمليات المعقدة للطرفية. وتُشرح المستودعات البعيدة وpush وpull والعمل الجماعي عبر pull request عملياً في دورة Git.

الأسئلة الشائعة

هل GitHub Desktop مجاني؟

نعم، التطبيق مجاني تماماً ومفتوح المصدر، ولا تدفع إلا إذا اشتركت في خطة مدفوعة من GitHub تحتاجها.

هل أحتاج إلى تثبيت Git منفصلاً لاستخدام GitHub Desktop؟

لا، فالتطبيق يحتوي على نسخة Git خاصة به. لكن إذا أردت العمل في الطرفية أيضاً، فثبّت Git لنظامك بشكل منفصل.

هل يمكن استخدام GitHub Desktop مع GitLab أو Bitbucket؟

نعم، يمكن استنساخ المستودع عبر عنوان HTTPS من تبويب URL. أما التكامل مع pull request وتسجيل الدخول بالحساب فيعمل مع GitHub فقط.

هل يتوفر GitHub Desktop بالعربية؟

لا توجد واجهة عربية رسمية، فالتطبيق بالإنجليزية. لكن أسماء الأزرار قصيرة وتطابق أوامر Git، لذلك يسهل فهمها.

لماذا لا يرى GitHub Desktop التغييرات في ملف معيّن؟

غالباً يكون الملف مستثنى بقاعدة في <code>.gitignore</code>، أو أنك تفتح مجلد مستودع آخر. تحقق من المسار في القائمة Current repository ومن محتوى <code>.gitignore</code>.

تعلّم هذا الموضوع بالفيديو

يُشرح هذا الموضوع بالتفصيل مع التطبيق العملي في دورة «Git من الصفر إلى مطور واثق».

الانتقال إلى الدورة