سير عمل Git·

استخدام GitHub Desktop لتبسيط تحديثات FiveM ورصد كل تغيير

دليل بدون أوامر السطر البرمجي لأصحاب خوادم FiveM: استخدم GitHub Desktop لترى بالضبط ما الذي تغير في التحديث، وحافظ على تعديلات الإعدادات الخاصة بك، وتراجع فوراً عند حدوث أي خلل.

مقدمة

كل صاحب خادم يعرف هذا الشعور. يصدر إصدار جديد من المورد، ويقول سجل التغييرات "استبدل مجلد /config/framework"، فتتوقف مكانك — لأنك قضيت ساعات في ضبط تلك الملفات وليس لديك أدنى فكرة عما لمسه التحديث فعلياً. هل تقوم بالاستبدال وتفقد عملك؟ هل تتخطى المجلد وتخاطر بتعطل السكريبت؟ هل تنسخ الأسطر ذهاباً وإياباً يدوياً وتأمل ألا تكون قد أغفلت أي شيء؟

هناك طريقة أفضل بكثير — ولا تحتاج إلى كتابة أمر واحد. باستخدام تطبيق مجاني يسمى GitHub Desktop، يمكنك رؤية ما تغير بالضبط في أي تحديث، والحفاظ على تخصيصاتك الخاصة آمنة، والتراجع في ثوانٍ، كل ذلك من خلال واجهة بسيطة تعتمد على النقر.

ما هو Git، وما هو GitHub Desktop؟

Git هو نظام للتحكم في الإصدارات — فكر فيه كأنه سجل تراجع غير محدود ومثالي لمجلد ما. في كل مرة تقوم فيها بحفظ لقطة (تسمى commit)، فإنه يسجل الحالة الدقيقة لكل ملف. لاحقاً يمكنك مقارنة أي لقطتين سطراً بسطر، أو استعادة حالة سابقة، أو دمج التغييرات معاً.

GitHub Desktop هو تطبيق مرئي ومجاني يضع Git خلف أزرار سهلة الاستخدام. لا توجد شاشة سوداء (terminal)، ولا أوامر تحتاج لحفظها — فقط نافذة واضحة تظهر لك ما الذي تغير وتسمح لك بعمل commit، وتراجع، ودمج بضغطة زر واحدة.

بالنسبة لخادم FiveM، المجلد الذي تتبعه هو دليل resources الخاص بك (أو سكربت واحد بداخله). يقوم Git بتحويل "أعتقد أنني غيرت شيئاً هنا قبل بضعة أسابيع" إلى "أرني بالضبط ما الذي تغير بين الشهر الماضي واليوم."

يعمل GitHub Desktop محلياً بالكامل. أنت لا تحتاج إلى رفع أي شيء إلى الإنترنت — كل ميزة في هذا الدليل تعمل دون اتصال بالإنترنت على جهازك الخاص أو الـ VPS. هل تفضل تطبيقاً آخر؟ Sourcetree، و GitKraken، و Fork، ولوحة Source Control المدمجة في VS Code، جميعها تقوم بنفس المهمة؛ والمفاهيم المذكورة أدناه تنطبق عليها مباشرة.

لماذا يعد هذا مثالياً لتحديثات الموارد (Resources)

تحديث سكربت بالطريقة التقليدية يعني العمل دون رؤية واضحة. يمنحك Git ثلاث قدرات خارقة:

  1. كشف التغييرات — بعد وضع إصدار جديد، يقوم GitHub Desktop بتمييز كل ملف تم تغييره وكل سطر تم تعديله. يخبرك سجل التغييرات (changelog) بأي المجلدات يجب استبدالها؛ حيث يوضح لك Git ما الذي تغير فعلياً لتتمكن من الوثوق به.
  2. تخصيص آمن — تعديلاتك محفوظة في الـ commits. عندما يمسس تحديث المورد (vendor update) نفس الملف، يمكن لـ Git دمج مجموعتي التغييرات، مع الحفاظ على تعديلاتك وتعديلاتهم.
  3. تراجع فوري — إذا تسبب تحديث في تعطل خادمك، فأنت على بُعد نقرة واحدة من الحالة الدقيقة التي كان عليها الخادم قبل خمس دقائق. لا داعي للذعر من سؤال "أين وضعت ذلك النسخة الاحتياطية".
يتناسب هذا تماماً مع الموارد المحمية بنظام التشفير (escrow) مثل Sky-Systems. لا تتغير مجلد source/ المشفر أبداً من جانبك، بينما تعيش كل الأشياء التي تقوم بتعديلها فعلياً في مجلد config/ النصي. يتتبع Git config/ بشكل رائع — وهو بالضبط المكان الذي تلتقي فيه تخصيصاتك مع تحديثات المورد.

إعداد لمرة واحدة باستخدام GitHub Desktop

تقوم بهذا الأمر مرة واحدة فقط لكل خادم.

تثبيت GitHub Desktop

قم بتنزيله وتثبيته من desktop.github.com. يمكنك تخطي أو إغلاق مطالبة تسجيل الدخول — لا تحتاج إلى حساب عبر الإنترنت إلا إذا كنت ترغب في أي وقت في النسخ الاحتياطي إلى GitHub، وهو ما لا يتطلبه هذا الدليل.

إضافة مجلد الموارد الخاص بك

في شريط القائمة، انقر فوق File → Add local repository، ثم Choose… وحدد مجلد resources الخاص بك.

سيلاحظ GitHub Desktop أنه لم يتم تتبعه بعد وسيعرض: "This directory does not appear to be a Git repository." انقر فوق رابط "create a repository" الذي يعرضه. في الشاشة التالية، اترك الإعدادات الافتراضية وانقر فوق Create repository.

احمِ أسرارك

يحتوي خادم FiveM على بيانات حساسة يجب ألا أبدًا يتم حفظها في السجل الخاص بك. في GitHub Desktop، افتح Repository → Repository settings → Ignored files وأضف قواعد مثل هذه:

# Never track secrets
**/*.env
**/secrets.lua
server.cfg

# Caches, logs, build output
**/cache/
**/logs/
**/.DS_Store

يمكنك أيضًا النقر بزر الماوس الأيمن فوق أي ملف في قائمة Changes واختيار Ignore file (أو Ignore all files of this type) — سيقوم GitHub Desktop بإضافته إلى .gitignore نيابة عنك.

لا تُضمّن بيانات الاعتماد في أي commit. يجب إبقاء كلمات مرور قاعدة البيانات، وsv_licenseKey، وأسرار Tebex، ورموز Discord، وروابط webhook بعيدًا عن Git. أضفها إلى قائمة التجاهل قبل أول عملية commit لك — فبمجرد إدراج أي شيء في commit، سيبقى في السجل.

خذ لقطتك الأولى

انتقل إلى علامة التبويب التغييرات (الشريط الجانبي الأيسر). ستظهر جميع الملفات في القائمة. في مربع الملخص الموجود في أسفل اليسار، اكتب شيئًا مثل Baseline: working server before updates، ثم انقر على Commit to main.

تم. أصبح لديك الآن شبكة أمان تحت خادمك بالكامل.

لا تنشر مواردك المدفوعة. إذا عرض عليك GitHub Desktop زرًا أزرق بعنوان "Publish repository"، فاتركه كما هو لأي سكربت مرخص أو محمي بنظام Escrow. إن رفع هذه الملفات إلى مستودع عام ينتهك الترخيص ويكشف المحتوى المدفوع. اجعل المستودع محليًا فقط.

سير عمل التحديث

هذا هو الروتين الذي تكرره مع كل تحديث. يستغرق الأمر حوالي دقيقة واحدة.

أرسل حالتك الحالية (Commit)

افتح GitHub Desktop وتحقق من علامة التبويب التغييرات. إذا كان هناك أي شيء مدرج، فقم بحفظه في commit أولاً مع ملخص مثل Pre-update snapshot، لكي يبرز التحديث بشكل واضح. إذا كانت القائمة فارغة، فأنت جاهز.

ضع الإصدار الجديد

أوقف خادمك، ثم استخرج إصدار المورد الجديد فوق الملفات القديمة، مع استبدالها — تمامًا كما يوجه سجل التغييرات (على سبيل المثال، "استبدل مجلد /config/framework"). لا تقلق بشأن فقدان أي شيء؛ فحالتك السابقة محفوظة بأمان عبر عملية الإرسال (commit).

شاهد ما الذي تغير بالضبط

عد إلى GitHub Desktop وافتح علامة التبويب Changes. هذه هي اللحظة الحاسمة: سيتم إدراج كل ملف لمسه التحديث، والنقر على أي منها يوضح التغييرات سطراً بسطر — الأسطر المحذوفة باللون الأحمر، والأسطر المضافة باللون الأخضر.

يمكنك الآن قراءة ما فعله التحديث بدقة — خيارات الإعدادات الجديدة، الإعدادات الافتراضية المتغيرة، المفاتيح المعاد تسميتها — بدلاً من التخمين.

ألقِ نظرة سريعة على قائمة الملفات وقارنها بسجل التغييرات. إذا ذكر سجل التغييرات أن config/framework و config/banking فقط قد تغيرا، فيجب أن تكون هذه هي المجلدات التي تراها هنا. أي شيء غير متوقع يستحق نظرة فاحصة قبل إجراء عملية الالتزام (commit).

توفيق تخصيصاتك

إذا قام التحديث باستبدال ملف قمت بتخصيصه، فسيظهر الفرق إعداداتك باللون الأحمر (محذوفة) والإعدادات الافتراضية للمورد باللون الأخضر (مضافة). افتح ذلك الملف في المحرر الخاص بك، وأعد تطبيق قيمك — يوضح الفرق بالضبط أي الأسطر هي المقصودة — ثم احفظ. يقوم GitHub Desktop بتحديث المقارنة مباشرة أثناء الكتابة.

لإجراء عملية توفيق تلقائية بالكامل، راجع نصيحة احترافية أدناه.

الالتزام بالتحديث (Commit)

بمجرد أن يبدو كل شيء صحيحاً ويعمل خادمك بسلاسة، عد إلى علامة التبويب Changes، وأدخل ملخصاً مثل Update sky_base to 1.21.0، وانقر على Commit to main.

أصبح لديك الآن نقطة مرجعية موسومة يمكنك العودة إليها دائماً.


الاستعادة عند حدوث خلل ما

هل حدث خلل في التحديث؟ ابقَ هادئاً — يمنحك GitHub Desktop عدة خيارات، من الخيارات البسيطة إلى الخيارات الجذرية.

التراجع عن التغييرات غير الملتزم بها. في علامة التبويب Changes، حدد الملفات (أو جميعها)، وانقر بزر الماوس الأيمن، واختر Discard Changes / Discard All Changes. سيؤدي ذلك إلى استعادتها إلى آخر عملية التزام (commit) قمت بها.

العودة إلى لقطة سابقة. افتح علامة التبويب History (السجل) في الشريط الجانبي الأيسر لرؤية كل لقطة قمت بإنشائها:

  • لـ التراجع بأمان عن تحديث مع الحفاظ على سجل نظيف، انقر بزر الماوس الأيمن على الـ commit الخاطئ واختر Revert Changes in Commit (التراجع عن التغييرات في الـ commit). سيؤدي هذا إلى إنشاء commit جديد للتراجع عن التغييرات — دون فقدان أي شيء.
  • للرجوع بالكامل إلى حالة سابقة، انقر بزر الماوس الأيمن على اللقطة التي تريدها واختر إعادة الضبط إلى الالتزام (Reset to commit).
إعادة الضبط إلى الالتزام (Reset to commit) تعيد مشروعك إلى تلك اللقطة. قم بعمل التزام (Commit) أو تخزين مؤقت (Stash) لأي شيء لا تزال ترغب في الاحتفاظ به أولاً. عند الشك، يفضل استخدام التراجع عن التغييرات في الالتزام (Revert Changes in Commit) — فهو الخيار غير المدمر للبيانات.

قم بوضع تغييراتك في الرف مؤقتًا — مفيد لاختبار تحديث ببيئة نظيفة، ثم استعادة عملك. انقر بزر الماوس الأيمن على رأس الملفات المتغيرة (Changed files) واختر تخزين جميع التغييرات (Stash All Changes). لاستعادتها، اختر التغييرات المخزنة (Stashed Changes) في الشريط الجانبي وانقر على استعادة (Restore).

يحفظ GitHub Desktop تخزينًا مؤقتًا واحدًا في كل مرة — التخزين مرة أخرى يستبدل السابق. استخدمه للانحرافات القصيرة والمؤقتة، واستخدم الالتزامات (Commits) لأي شيء تريد الاحتفاظ به.

نصيحة احترافية: الدمج التلقائي لتحديثات الموردين

هل سئمت من إعادة تطبيق تعديلات الإعدادات يدويًا بعد كل تحديث؟ يمكن لـ GitHub Desktop القيام بذلك نيابة عنك باستخدام دمج ثلاثي (three-way merge).

الفكرة: الاحتفاظ بفرع واحد يحتوي على إصدارات الموردين الأصلية وفرع آخر يحتوي على تعديلاتك فوقها.

إنشاء فرع للمورد (Vendor Branch)

انقر فوق القائمة المنسدلة الفرع الحالي (Current Branch) في الأعلى، ثم فرع جديد (New Branch)، وقم بتسميته vendor. هذا الفرع لن يحتوي إلا على ملفات المورد غير المعدلة.

تسجيل كل إصدار في فرع المورد

عند صدور إصدار جديد، انتقل إلى فرع vendor (من قائمة القائمة المنسدلة للفرع الحالي)، واستخرج ملفات الإصدار غير المعدلة فوق الملفات القديمة مع استبدالها، ثم قم بعمل commit مع ملخص مثل Vendor sky_base 1.21.0.

دمج التحديث في تعديلاتك

عد إلى فرع main الخاص بك (من القائمة المنسدلة Current Branch لاختيار الفرع الحالي). ثم افتح Branch → Merge into current branch… (دمج في الفرع الحالي)، واختر vendor، ثم اضغط على merge.

يقوم GitHub Desktop بدمج تغييرات المورد مع تخصيصاتك تلقائيًا. يتوقف البرنامج فقط ليسألك عندما يغير التحديث نفس الأسطر تمامًا التي قمت بتخصيصها — ويظهر شاشة واضحة لحل تلك المواضع القليلة. وفي أي مكان آخر، يتم الاحتفاظ بكلتا مجموعتي التغييرات من أجلك.

هذه هي نفس التقنية التي تستخدمها الفرق الاحترافية لتتبع المكتبات الأصلية دون فقدان التغييرات المحلية — وهي تعمل بنفس الكفاءة لخادمك.


هل تفضل استخدام سطر الأوامر؟

إذا كنت مرتاحًا في استخدام الطرفية (terminal)، فإن سير العمل المذكور أعلاه يترجم إلى مجموعة من الأوامر:

# One-time setup (run inside your resources folder)
git init
git add .
git commit -m "Baseline: working server before updates"

# Each update
git add . && git commit -m "Pre-update snapshot"   # snapshot first
# ...drop in the new release, overwriting files...
git status            # which files changed
git diff --stat       # a compact per-file summary
git diff              # full line-by-line changes
git add . && git commit -m "Update sky_base to 1.21.0"

# Rolling back
git restore <file>    # undo changes to one file
git restore .         # undo all uncommitted changes
git log --oneline     # find a snapshot
git reset --hard <id> # rewind to it (destructive)
git stash / git stash pop   # shelve and restore temporarily

أفضل الممارسات

  • قم بعمل commit قبل كل تحديث. أخذ لقطة (snapshot) يستغرق ثانيتين ويوفر ساعات.
  • اكتب ملخصات واضحة. Update sky_base to 1.21.0 تتفوق على stuff عند مراجعة السجل بعد ستة أشهر.
  • حافظ على تجاهل الملفات السرية. لا يجب أبدًا تضمين بيانات الاعتماد في سجل الإصدارات.
  • قم بعمل commit بعد عملية تشغيل نظيفة، وليس قبلها. لا تضع علامة "جيد" على اللقطة إلا بعد تشغيل الخادم فعليًا.
  • تتبع مجلد resources الكامل في مستودع واحد. بهذه الطريقة، يمكن لعملية تراجع (rollback) واحدة استعادة أي سكربت من تحديث سيء.
  • احتفظ به محليًا. لا تنشر أبدًا الموارد المرخصة أو المحمية بنظام Escrow في مستودع عام.

الخلاصة

لم يعد تحديث خادم FiveM يعني التخمين، أو فقدان التخصيصات، أو البحث المحموم عن النسخ الاحتياطية. فمن خلال إعداد GitHub Desktop لمرة واحدة وروتين يستغرق دقيقة واحدة، يمكنك رؤية كل تغيير يجريه التحديث، والحفاظ على تعديلاتك الخاصة كما هي، والتراجع عن أي خطأ فوراً — كل ذلك دون كتابة أمر واحد.

في المرة القادمة التي يخبرك فيها سجل التغييرات باستبدال مجلد ما، ستفعل ذلك بكل ثقة — لأن GitHub Desktop سيوضح لك بالضبط ما الذي تغير، في كل مرة.