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

يعني عرض شجرة Git أن ترى تاريخ الإيداعات (commits) رسمًا بيانيًا، وتُسمّى الأداة التي ترسمه بالإنجليزية git tree visualizer: كل نقطة إيداع، وكل خط ملوّن فرع، والتقاء خطين عند نقطة واحدة يعني دمجًا (merge). ويأتي Git نفسه بأداتين من هذا النوع: نفّذ git log --graph --oneline --all --decorate في أي طرفية، أو افتح gitk --all. وإن أردت تاريخًا تنقر عليه وتصفّيه وتبحث فيه، فاستخدم مخطط إيداعات في واجهة رسومية مثل GitTree، عميل Git مجاني لأنظمة macOS وWindows وLinux.
يشرح هذا الدليل الطرق الثلاث، ثم يعلّمك قراءة المسارات وإيداعات الدمج، والعثور على إيداع واحد بين الآلاف. وللإفصاح: كتب هذا الدليل صانعُ GitTree، أما قسما سطر الأوامر وgitk فلا يحتاجان إلا إلى Git.
شرح git log graph: عرض الشجرة المدمج في Git
أسرع طريقة لعرض شجرة Git أمر واحد، يعمل في أي مستودع، وعبر SSH، وعلى كل نظام يعمل عليه Git:
git log --graph --oneline --all --decorate--graphيرسم مخططًا نصيًا للفروع وعمليات الدمج على يسار كل إيداع، ويرتّب الإيداعات بحيث لا يظهر إيداعٌ أصل قبل الإيداعات المبنية عليه.--onelineيطبع سطرًا واحدًا لكل إيداع: المعرّف المختصر (hash) والسطر الأول من الرسالة.--allيعرض كل الفروع المحلية والبعيدة والوسوم (tags) معHEAD، لا الفرع الحالي وحده. ومن دونه تبقى الفروع غير المدموجة في فرعك الحالي مخفية.--decorateيطبع أسماء الفروع والوسوم بجوار الإيداعات التي تشير إليها. يفعل Git ذلك تلقائيًا حين تظهر المخرجات في الطرفية، لذا تبرز فائدة الخيار غالبًا عند تمرير المخرجات إلى أمر آخر أو بعد تغيير الإعدادlog.decorate.
تبدو المخرجات هكذا: أحدث إيداع في الأعلى، والعلامة * تمثّل إيداعًا، والرموز | و\ و/ هي خطوط الفروع:
* a1b2c3d (HEAD -> main) Merge branch 'feature/search'
|\
| * 9f8e7d6 (feature/search) Highlight matched terms
| * 5c4b3a2 Add search index
* | 1a2b3c4 Fix typo in README
|/
* 0f9e8d7 (tag: v1.0.0) Release 1.0.0اقرأها من الأسفل إلى الأعلى: صدر الإصدار v1.0.0، ثم سار عملان متوازيان (إصلاح في ملف README على main، وميزة بحث على فرع مستقل)، ثم جمعهما إيداع الدمج في الأعلى.
احفظ الأمر باسم مستعار قصير (alias)
لا أحد يرغب في كتابة أربعة خيارات في كل مرة. الاسم المستعار في Git يختصر الأمر كله إلى git tree:
git config --global alias.tree "log --graph --oneline --all --decorate"
git treeأربعة أشكال أخرى تستحق الحفظ
git log --graph --oneline --first-parent main
git log --graph --oneline --all --simplify-by-decoration
git log --graph --oneline main..feature/search
git log --graph --pretty=format:"%h %an %ar %s"--first-parentيتبع الأصل الأول فقط في كل دمج، فيظهرmainقائمةً مستقيمة بما وصل إليه، بإيداع دمج واحد لكل ميزة.--simplify-by-decorationيُبقي فقط الإيداعات التي يشير إليها فرع أو وسم: صورة مختصرة لشجرة فروع Git دون الإيداعات الواقعة بينها.main..feature/searchيعرض إيداعاتfeature/searchالتي لم تصل إلىmainبعد، أي ما سيجلبه الدمج.--pretty=formatيضيف اسم المؤلف وتاريخًا نسبيًا (مثل «3 days ago») إلى كل سطر.
أداة gitk: عارض تاريخ Git الذي يأتي مع Git
gitk هي أداة Git الرسومية لتصفح المستودعات، وهي مكتوبة بلغة Tcl/Tk. ترسم مخطط الإيداعات، وتعرض تفاصيل كل إيداع، وتسرد ملفات كل نسخة. شغّلها من داخل المستودع:
gitk --allتقبل gitk القيود نفسها التي يقبلها git log، فيمكنك حصرها في فترة زمنية أو مجلد. هذا الأمر يفتح تغييرات آخر أسبوعين داخل src/ فقط:
gitk --since="2 weeks ago" -- src/إذا ردّت الطرفية بالرسالة gitk: command not found فتثبيت Git لديك لا يتضمنها. على Debian وUbuntu تأتي gitk في حزمة مستقلة:
sudo apt install gitkصُمّمت gitk لقراءة التاريخ. وفي قائمة النقر بالزر الأيمن فيها بعض الإجراءات على الإيداعات، لكن إنشاء الإيداعات من شأن أداتها الشقيقة git gui، التي تنص وثائقها على أنها لا تعرض تاريخ المشروع. فتجد نفسك في العمل اليومي تتنقل بين النافذتين والطرفية.
مخطط إيداعات في واجهة رسومية: عرض شجرة Git تنقر عليه
يرسم عميل Git المكتبي الشجرة نفسها، لكن كل صف فيها تفاعلي. اختر إيداعًا لترى رسالته وأصوله والملفات التي غيّرها. انقر عليه بالزر الأيمن لإنشاء فرع أو تنفيذ cherry-pick أو revert. انقر مرتين على اسم فرع للتبديل إليه، أو اسحب فرعًا وأفلته على آخر لدمجه أو تنفيذ rebase. وفي GitTree يملأ مخطط الإيداعات النافذة الرئيسية، فلا تحتاج إلى نافذة عرض منفصلة.

هذا ما يرسمه GitTree على المخطط إلى جانب النقاط والخطوط:
- مسارات ملوّنة لكل فرع، مع أسماء الفروع المحلية والبعيدة والوسوم على الإيداعات التي تشير إليها.
- صف
// WIPفوق أحدث إيداع للتغييرات التي لم تودعها بعد، وكل stash مرسوم على المخطط عند الإيداع الذي أُنشئ منه. - صور المؤلفين، وشارات التوقيع على الإيداعات الموقّعة.
- شارات طلبات السحب (pull requests) وفحوص CI على رؤوس الفروع بعد ربط GitHub أو GitLab أو Bitbucket أو Azure DevOps.
- تمرير سلس لأكثر من 100,000 إيداع (بقياسات على Linux)، فيبقى التاريخ الكبير سهل الاستخدام.
يشغّل GitTree نسخة Git المثبتة على جهازك (الإصدار 2.39 أو أحدث)، فكل زر يفعل ما يفعله الأمر المقابل. وإن كنت ما زلت تفاضل بين الأسلوبين، فمقالنا عن واجهة Git الرسومية مقابل سطر الأوامر يعرض مزايا كل منهما وحدوده.
كيف تقرأ الرسم البياني لتاريخ Git: المسارات والتفرعات والدمج
سواء كان المخطط نصيًا في الطرفية أو ملوّنًا في نافذة، فالقواعد واحدة:
| ما تراه | ما يعنيه |
|---|---|
نقطة (* في الطرفية) | إيداع واحد. الإيداعات الأحدث فوق الأقدم. |
| خط عمودي، أو مسار | خط تطوير: إيداعات متتالية على فرع واحد. |
| خط يتفرع جانبًا | أنشأ أحدهم فرعًا من ذلك الإيداع، فاستمر العمل في مكانين. |
| خطان يلتقيان عند نقطة واحدة | إيداع دمج (merge commit) له أصلان، واحد من كل خط. |
اسم مثل main أو origin/main أو v1.0.0 | فرع محلي أو فرع بعيد أو وسم يشير إلى ذلك الإيداع. وتدل HEAD -> على ما بدّلت إليه حاليًا. |
| خط مستقيم واحد بلا تفرعات | تاريخ خطي، غالبًا نتيجة دمج fast-forward أو تنفيذ rebase قبل الدمج. |
قراءة إيداعات الدمج
لإيداع الدمج أصلان. الأصل الأول هو الفرع الذي كنت عليه عند الدمج، وهو main غالبًا، والثاني هو الفرع الذي دمجته. لهذا يعطي --first-parent ملخصًا نظيفًا لفرع main: فهو يتخطى ما بداخل كل فرع ميزة. وفي GitTree، اختر إيداع دمج فتعرض لوحة التفاصيل معرّفَي الأصلين كليهما.

حين تتقاطع المسارات ويزدحم المشهد
الفروع طويلة العمر التي تُدمج ذهابًا وإيابًا تجعل المسارات تتقاطع. لا خلل في ذلك؛ كل ما في الأمر أن الشاشة تعرض أكثر مما تحتاج، فاختصرها إلى الفروع التي تهمك. في الطرفية، سمِّ الفروع بدل --all، مثل git log --graph --oneline main feature/search. وفي GitTree، انقر بالزر الأيمن على اسم الفرع واختر إخفاء في المخطط، أو عرضه وحده في المخطط، أو تثبيت في البداية ليبقى مساره في العمود الأول (في الواجهة الإنجليزية: Hide in Graph وSolo in Graph وPin to the Left).
البحث في تاريخ Git: اعثر على إيداع واحد بين الآلاف
رؤية الشجرة نصف المهمة فقط، والنصف الآخر أن تعثر على الإيداع الذي غيّر الجزء الذي تتتبّع فيه الخطأ.
البحث من سطر الأوامر
git log --oneline --author="Jane"
git log --oneline --since="2 weeks ago" -- src/
git log --oneline -S"parse_header"
git log --oneline -G"fn [a-z_]+_header"--authorيُبقي الإيداعات التي يطابق اسمُ مؤلفها أو بريده النمطَ المحدد.--sinceو--untilيحددان الفترة الزمنية، و-- src/يُبقي فقط الإيداعات التي لمست ذلك المسار.-S، المعروف باسم pickaxe، يجد الإيداعات التي أضافت نصًا معينًا أو حذفته، وهو أسرع طريقة لمعرفة متى ظهرت دالة أو اختفت.-Gيجد الإيداعات التي تطابق أسطرها المضافة أو المحذوفة تعبيرًا نمطيًا (regex). التزم بصيغ POSIX مثل[a-z_]أو[[:alnum:]]، فالاختصارات مثل\wلا تعمل مع كل نسخ Git.
البحث في GitTree باستخدام author: وfile: وchange:
يطابق حقل البحث فوق المخطط (البحث في السجل المحمَّل) الرسالة أو المؤلف أو المعرّف أو اسم الفرع أو الوسم. وللبحث الأعمق، افتح لوحة الأوامر بالاختصار Ctrl+Shift+P (أو ⌘+Shift+P على Mac)، واكتب # ثم استعلامك. الكلمات التي بلا بادئة تبحث في رسائل الإيداعات، وهذه البادئات تضيّق النتائج:
author:janeأوauthor:"Jane Doe": اسم المؤلف أو بريده يحتوي هذا النص.file:src/main.rs: الإيداع يلمس هذا المسار، وكرّرها لمطابقة عدة مسارات.change:parse_header: الإيداع يضيف هذا النص أو يحذفه، مثلgit log -S.change:/fn [a-z_]+_header/: سطر متغيّر يطابق التعبير النمطي، مثلgit log -G.
ويمكنك الجمع بينها في استعلام واحد: #fix crash author:jane file:src/ يجد إيداعات Jane التي تذكر «fix crash» وتلمس src/. ولتصغير المخطط نفسه بدل عرض قائمة نتائج، استخدم تصفية المخطط… لإبقاء مؤلف واحد أو فترة زمنية أو مسار.

اعرض شجرة Git في GitTree
ثبّت GitTree
حمّل GitTree لنظام macOS أو Windows أو Linux وثبّته. وتأكد من تثبيت Git 2.39 أو أحدث (على Windows يعني ذلك تثبيت Git for Windows)؛ فنظام Ubuntu 22.04 يأتي بإصدار أقدم، لذا حدّث Git على Ubuntu أولًا.
سجّل الدخول مرة واحدة
سجّل الدخول بحساب GitTree مجاني تنشئه على gittree.app عبر GitHub أو GitLab أو Bitbucket أو Azure DevOps. يحتاج التشغيل الأول إلى الإنترنت، وبعده يعمل التطبيق دون اتصال حتى 7 أيام بين كل تحقق وآخر.
افتح مستودعًا أو استنسخه
في صفحة البداية، اختر فتح (Open) وحدد مجلدًا فيه مستودع Git، أو اختر استنساخ (Clone) لنسخ مستودع من رابط عبر HTTPS أو SSH.
اقرأ المخطط
يملأ مخطط الإيداعات النافذة الرئيسية: أحدث الإيداعات في الأعلى، ومسار ملوّن لكل فرع، وأسماء للفروع والوسوم. انقر على أي إيداع لترى رسالته وأصوله والملفات التي غيّرها.
ركّز وابحث
انقر بالزر الأيمن على اسم فرع لإخفائه أو عرضه وحده أو تثبيته، واستخدم تصفية المخطط… لاختيار مؤلف أو فترة زمنية أو مسار، واكتب
#في لوحة الأوامر للبحث باستخدامauthor:أوfile:أوchange:.
أي أداة لعرض شجرة Git تختار؟
| الخيار | الأنسب لـ | ما تحتاج إليه |
|---|---|---|
git log --graph | نظرة سريعة، وجلسات SSH، والسكربتات وسجلات CI | Git فقط |
| gitk | مخطط تنقر عليه من حزمة أدوات Git نفسها | Git (وعلى Debian وUbuntu حزمة gitk المستقلة) |
| GitTree | قراءة التاريخ والبحث فيه وتعديله في نافذة واحدة | GitTree (مجاني اليوم، بحساب مجاني) وGit 2.39 أو أحدث |
ينتهي الأمر بمعظم المطورين إلى استخدام أكثر من أداة: الطرفية لنظرة سريعة، والواجهة الرسومية للتنقيب في التاريخ وللتعديلات التي يسهل فهمها بالنظر، مثل إعادة الأساس التفاعلية (interactive rebase) في واجهة رسومية. وإن كنت جديدًا على الفروع والإيداعات، فابدأ بـدليل Git للمبتدئين. وإن أردت المقارنة بين التطبيقات المكتبية، فاطّلع على قائمتنا لـأفضل واجهات Git الرسومية.
GitTree مجاني اليوم، والمستودعات الخاصة مشمولة. اطّلع على كل ما يقدمه مخطط الإيداعات وبقية التطبيق، أو اقرأ ملاحظات التثبيت على Mac وWindows وLinux.
الأسئلة الشائعة
ما هو عارض شجرة Git؟
عارض شجرة Git أداة ترسم تاريخ إيداعات المستودع رسمًا بيانيًا بدل قائمة مسطحة. كل إيداع نقطة، وكل فرع خط، وتظهر عمليات الدمج حيث تلتقي الخطوط. يتضمن Git أداتين من هذا النوع: الأمر git log --graph للطرفية، ونافذة gitk. أما عملاء Git المكتبيون مثل GitTree فيضيفون مخططًا تفاعليًا تنقر عليه وتبحث فيه.
كيف أعرض شجرة فروع Git في الطرفية؟
نفّذ git log --graph --oneline --all --decorate داخل المستودع. يرسم --graph خطوط الفروع، ويجعل --oneline كل إيداع في سطر واحد، ويضم --all كل الفروع والوسوم بدل الفرع الحالي وحده، ويطبع --decorate أسماء الفروع والوسوم. احفظه باسم مستعار بالأمر git config --global alias.tree "log --graph --oneline --all --decorate" ومن بعدها يكفيك أن تكتب git tree.
لماذا لا يعرض git log كل الفروع؟
يعرض git log افتراضيًا الإيداعات التي يمكن الوصول إليها من HEAD فقط، أي من الإيداع الذي بدّلت إليه. لذلك تُستبعد الفروع غير المدموجة في فرعك الحالي. أضف --all لتشمل كل الفروع المحلية والبعيدة والوسوم، أو سمِّ الفروع التي تريدها، مثل git log --graph main feature/search.
هل تأتي أداة gitk مع Git؟
gitk جزء من حزمة أدوات Git، لذا تتضمنها تثبيتات كثيرة. لكن بعض توزيعات Linux تضعها في حزمة مستقلة: على Debian وUbuntu ثبّتها بالأمر sudo apt install gitk. شغّلها من داخل المستودع بالأمر gitk --all لترى كل الفروع. وهي تقبل قيود التاريخ والمسار نفسها التي يقبلها git log، مثل --since أو -- src/.
كيف أجد الإيداع الذي أضاف سطرًا معينًا من الكود؟
استخدم بحث pickaxe. يسرد git log -S"text" الإيداعات التي غيّرت عدد مرات ظهور هذا النص بالضبط، فيكشف متى أُضيف ومتى حُذف. ويطابق git log -G"regex" الأسطر المضافة أو المحذوفة مع تعبير نمطي. وفي GitTree، افتح لوحة الأوامر واكتب # ثم استخدم change:text أو change:/regex/ لإجراء البحثين نفسيهما.
هل GitTree مجاني، وعلى أي أنظمة يعمل؟
GitTree مجاني اليوم للأفراد والمؤسسات، والمستودعات الخاصة مشمولة، ولا توجد له خطة مدفوعة. يعمل على أجهزة ماك (Mac) بنظام macOS 13 أو أحدث، وعلى ويندوز (Windows) 10 و11 بنسخة 64 بت، وعلى Linux (لينكس) بنسخة 64 بت (Ubuntu 22.04 أو أحدث، وDebian 12 أو أحدث). ويحتاج إلى حساب GitTree مجاني وإلى Git مثبت على جهازك بالإصدار 2.39 أو أحدث.
هل يتحمل عارض مخطط Git المستودعات الكبيرة جدًا؟
يتعامل المخطط النصي في الطرفية مع أي حجم، لكن قراءته تصعب مع كثرة الفروع، فقيّده بأسماء الفروع أو --since أو مسار. أما مخطط الإيداعات في GitTree فيمرّر بسلاسة لأكثر من 100,000 إيداع في قياسات أُجريت على Linux، ويمكنك إخفاء الفروع أو عرض أحدها وحده أو تثبيته، والتصفية بالمؤلف أو التاريخ أو المسار ليبقى التاريخ الكبير مقروءًا.
المصادر
تحققنا من المعلومات عن المنتجات الأخرى من صفحاتها الرسمية بتاريخ 6 أكتوبر 2026. الأسعار والميزات تتغير، وصفحات الشركات هي المرجع.