تخطَّ إلى المحتوى

Create user config directory and file

منصةأمر
Ubuntu/Debiansudo apt update && sudo apt install tig
Fedora/RHELsudo dnf install tig
Arch Linuxsudo pacman -S tig
macOS (Homebrew)brew install tig
macOS (MacPorts)sudo port install tig
Windows (Git Bash)مُضمَّن مع Git for Windows
Windows (WSL)sudo apt install tig
Windows (Scoop)scoop install tig
From Sourcegit clone https://github.com/jonas/tig.git && cd tig && make && sudo make install
tig --version## التثبيت
أمروصف
tigعرض الواجهة الرئيسية التي تظهر سجل الالتزامات في المستودع الحالي
tig statusShow working directory status (like git status)
tig blame <file>اعرض الملكية السطرية للملف
tig <file>إظهار سجل التعديلات لملف محدد
tig show <commit>عرض تفاصيل commit محدد
tig refsاعرض كل الفروع والعلامات
tig stashعرض جميع التغييرات المخزنة
tig logعرض سجل التعديلات
tig diffإظهار التغييرات غير المرحلة في دليل العمل
tig grep <pattern>البحث عن نمط في المستودع
tig <branch>إظهار commits من فرع محدد
tig --allإظهار commits من جميع الفروع
tig --helpعرض معلومات المساعدة
tig --versionاعرض معلومات إصدار tig
مفتاحوصف
j / انزل سطرًا واحدًا للأسفل
k / انتقل لأعلى سطر واحد
h / مرر لليسار
l / مرر لليمين
PgUp / bصفحة للأعلى
PgDn / Spaceصفحة للأسفل
Homeانتقل إلى السطر الأول
Endانتقل إلى السطر الأخير
Enterفتح/تحديد العنصر (يعتمد على السياق)
Tabالانتقال إلى العرض التالي
qإغلاق العرض الحالي
Qأغلق جميع العروض وأغلق البرنامج
Rإعادة تحميل/تحديث العرض الحالي
Oقم بتكبير العرض الحالي
hعرض المساعدة وارتباطات المفاتيح
مفتاحوصف
/ابحث للأمام
?ابحث للخلف
nابحث عن المباراة التالية
Nالعثور على المباراة السابقة
[انتقل إلى كتلة الاختلاف السابقة
]انتقل إلى كتلة الاختلاف التالية
{انتقل إلى الملف السابق في diff
}انتقل إلى الملف التالي في الفرق
أمروصف
tig --author="Name"تصفية المراجعات حسب مؤلف محدد
tig --since="2 weeks ago"عرض commits من تاريخ نسبي
tig --after="2024-01-01" --before="2024-12-31"إظهار الالتزامات ضمن نطاق تاريخ
tig --grep="pattern"اعرض المراجعات التي تحتوي على نمط في الرسالة
tig --mergesإظهار فقط عمليات الدمج
tig --no-mergesاستبعاد عمليات الدمج
tig main..featureاعرض الـ commits في branch الميزة والتي لم تكن موجودة في branch الرئيسي
tig main...featureاعرض التغييتات (commits) المختلفة بين الفروع
tig --follow -- <file>تتبع تاريخ الملف من خلال إعادة التسمية
tig -S"function_name"بحث المعول: التغييرات في التكرارات
tig -G"regex"عرض commits حيث يتطابق diff مع regex
tig -n 100قيّد إلى آخر 100 عملية إرسال
tig -- '*.py'إظهار التعديلات التي تؤثر على ملفات Python فقط
tig reflogتصفح إدخالات Git reflog
tig show <commit>:<path>عرض محتوى الملف في التعديل (commit) المحدد
tig blame +<line> <file>افتح عرض المسؤولية عند رقم سطر محدد
مفتاحعرضوصف
uالحالةمرحلة/إلغاء مرحلة ملف أو جزء
1الحالةمرحلة/إلغاء مرحلة سطر واحد
!الحالةاستعادة الملف أو القطعة
Cالحالةالتزم بالتغييرات المرحلية
Cالرئيسي/السجلاختيار التعديل (cherry-pick)
eالرئيسي/السجلتحرير رسالة الالتزام (إذا كان HEAD)
!الرئيسي/السجلالتراجع عن التعديل
@الرئيسي/السجلالانتقال للتأكيد (checkout)
Cالمراجعإنشاء فرع جديد
dالمراجعاحذف الفرع
mالمراجعدمج الفرع
!أيتنفيذ الأمر الخارجي
:أيExecute git command (e.g., :!git reset)
$XDG_CONFIG_HOME/tig/config## العمليات التفاعلية (داخل Tig)
~/.config/tig/config## الإعدادات

يقرأ Tig الإعدادات من هذه المواقع (حسب الأولوية): ~/.tigrc``$GIT_DIR/tigrc(عادة /etc/tigrc)```bash

Create user config directory and file

mkdir -p ~/.config/tig touch ~/.config/tig/config

Or use traditional location

touch ~/.tigrc

# Customize interface colors
color cursor white blue bold
color title-focus white blue bold
color title-blur white black bold

# Diff colors
color diff-header yellow default
color diff-chunk magenta default
color diff-add green default
color diff-del red default

# Status colors
color stat-staged green default
color stat-unstaged red default
color stat-untracked yellow default
``````bash
# Configure main view columns
set main-view = id:yes date:default author:full commit-title:yes,graph:yes,refs:yes

# Set commit ID width
set id-width = 10

# Enable line numbers in blame view
set blame-view = date:default author:full id:yes,color line-number:yes,interval=1 text

# Line number display interval
set line-number-interval = 5

# Horizontal scrolling percentage
set horizontal-scroll = 33%

# Tab size for display
set tab-size = 4

# Truncation indicator
set truncation-delimiter = ~
``````bash
# Number of context lines in diffs
set diff-context = 3

# Ignore whitespace (options: no, all, some, at-eol)
set ignore-space = some

# Use patience diff algorithm
set diff-options = --patience

# Show untracked files in status view
set status-show-untracked-files = yes
```(خاص بالمستودع)```bash
# Bind 'C' in main view to cherry-pick
bind main C !git cherry-pick %(commit)

# Bind 'P' in status view to push
bind status P !git push

# Bind 'F' to fetch in main view
bind main F !git fetch

# Bind 'S' to create stash
bind status S !git stash save "%(prompt Enter stash message: )"

# Bind 'A' to amend commit
bind status A !git commit --amend

# Open commit in browser (GitHub)
bind main B !@hub browse -- commit/%(commit)
``````bash
# Wrap long lines
set wrap-lines = yes

# Show changes in status view
set status-show-untracked-dirs = yes

# Refresh interval (seconds)
set refresh-mode = auto
set refresh-interval = 1

# Mouse support
set mouse = yes

# Editor for commit messages
set editor-line-number = yes
```(على مستوى النظام)

### إنشاء ملف الإعدادات
```bash
# Open repository
tig

# Navigate to commit (use j/k)
# Press Enter to see full diff
# Press Tab to switch between views
# Press q to go back

# Review specific branch
tig feature-branch

# Compare branches
tig main..feature-branch
```### حالة الاستخدام 2: العثور على متى تم إدخال الخلل
```bash
# Search for specific code change
tig -S"problematic_function"

# Or search commit messages
tig --grep="bug\|fix" -i

# View blame for specific file
tig blame src/buggy-file.js

# Navigate to suspicious line
# Press Enter to see the commit
# Press Tab to see full commit details
```### حالة الاستخدام 3: التصنيف والالتزام التفاعلي
```bash
# Open status view
tig status

# Navigate to files (j/k)
# Press 'u' to stage/unstage files
# Press '1' to stage individual lines
# Press 'C' to commit when ready
# Write commit message and save
```### حالة الاستخدام 4: استكشاف تاريخ المشروع
```bash
# View all commits with graph
tig --all

# Filter by author and date
tig --author="John Doe" --since="1 month ago"

# View commits affecting specific files
tig -- src/core/*.py

# Follow file through renames
tig --follow -- src/renamed-file.js
```### حالة الاستخدام 5: إدارة الفروع
```bash
# View all branches and tags
tig refs

# Navigate to branch
# Press 'C' to create new branch
# Press 'd' to delete branch
# Press 'm' to merge branch
# Press Enter to view branch commits
```## أفضل الممارسات

- **تعلم اختصارات لوحة المفاتيح**: تم تصميم Tig للتنقل باستخدام لوحة المفاتيح. احفظ `j/k`للتحرك، `Enter`للتعمق، و `q`للعودة للتصفح بكفاءة.

- **استخدم الأوامر الخاصة بالعرض**: لكل عرض عمليات مختلفة. اضغط `h`في أي عرض لرؤية الارتباطات المفتاحية المتاحة في ذلك السياق.

- **خصص إعداداتك**: أنشئ ملف `~/.config/tig/config`لتخصيص الألوان والارتباطات وإعدادات العرض بما يتوافق مع سير عملك وتفضيلاتك.

- **الجمع بين أوامر Git**: استخدم tig للتصور وأوامر Git للعمليات. Tig يكمل Git وليس بديلاً عنه.

- **استخدم المرشحات للمستودعات الكبيرة**: في المستودعات التي تحتوي على آلاف الالتزامات، استخدم `--author`، `--since`، `--grep`، أو مرشحات الملفات لتضييق النتائج.

- **استفد من عرض الحالة**: استخدم `tig status`كبديل تفاعلي لـ `git add -p`للتحكم الدقيق في التصنيف.

- **استكشف باستخدام Tab**: استخدم `Tab`للتبديل بين العروض ذات الصلة ورؤية منظورات مختلفة للبيانات نفسها (الالتزام → الاختلاف → الشجرة).

- **إعداد تكوينات خاصة بالمستودع**: أنشئ `.git/tigrc`في المستودعات التي تحتاج إعدادات خاصة دون التأثير على التكوين العام.

## استكشاف المشكلات

| مشكلة | حل |
|-------|----------|
| Tig not found after installation | Ensure tig is in your PATH: `which tig`. Restart terminal or run `source ~/.bashrc` |
| Colors not displaying correctly | Check terminal supports 256 colors. Set `TERM=xterm-256color` or configure colors in `~/.tigrc` |
| Slow performance in large repos | Use filters to limit commits: `tig -n 1000` or `tig --since="1 month ago"`. Consider `set refresh-mode = manual` |
| UTF-8 characters display incorrectly | Set locale: `export LC_ALL=en_US.UTF-8` and `export LANG=en_US.UTF-8` in shell config |
| Mouse not working | Enable in config: `set mouse = yes`. Ensure terminal supports mouse events |
| Can't edit commits or stage files | Ensure you have write permissions and are in a valid Git repository. Check `git status` works |
| Custom key bindings not working | Verify syntax in config file. Check for conflicts with default bindings. Reload with `R` |
| Tig crashes on startup | Check Git repository is valid: `git status`. Update tig to latest version. Remove custom config temporarily |
| Diff view shows binary files | Add to `.gitattributes`: `*.bin -diff`. Or set `set diff-options = --no-binary` |
| Line numbers not showing | Enable in config: `set line-number-interval = 1` and ensure view supports line numbers |
## بطاقة المرجع السريع```
LAUNCHING TIG          NAVIGATION              OPERATIONS
tig                    j/k  ↓/↑  Move         u    Stage/unstage
tig status            h/l  ←/→  Scroll       C    Commit/cherry-pick
tig blame <file>      PgUp/PgDn  Page        !    Revert/execute
tig <branch>          Enter      Select      e    Edit
tig --all             Tab        Next view   @    Checkout
                      q/Q        Quit        R    Refresh

SEARCH                 VIEWS                   FILTERS
/  Search forward      tig        Main        --author="Name"
?  Search backward     tig status Status      --since="date"
n  Next match          tig refs   Branches    --grep="pattern"
N  Previous match      tig blame  Blame       --no-merges
[  Prev chunk          tig stash  Stash       -- '*.ext'
]  Next chunk          tig diff   Diff
```