مقدمه‌ای بر گیت: چرا هر توسعه‌دهنده‌ای به آن نیاز دارد؟

گیت (Git) یک سیستم کنترل نسخه توزیع‌شده (Distributed Version Control System) است که امروزه به استاندارد اصلی در دنیای توسعه نرم‌افزار تبدیل شده است. این ابزار قدرتمند به شما و تیم‌تان اجازه می‌دهد تا تاریخچه تغییرات پروژه‌های خود را به طور کامل ثبت و مدیریت کنید. با گیت، می‌توانید به راحتی به نسخه‌های قبلی کد بازگردید، روی ویژگی‌های جدید در شاخه‌های (Branches) مجزا کار کنید و در نهایت، تغییرات را با هم ادغام نمایید. این قابلیت‌ها به ویژه در پروژه‌های تیمی، از تداخل کاری جلوگیری کرده و همکاری را به شدت آسان‌تر می‌کند. یادگیری گیت یک مهارت ضروری برای هر برنامه‌نویس، طراح وب و مدیر سیستمی است که می‌خواهد به صورت حرفه‌ای فعالیت کند.

جدول زیر یک مرجع کامل و دسته‌بندی شده از مهم‌ترین و پرکاربردترین دستورات گیت است که به شما کمک می‌کند تا به سرعت دستور مورد نظر خود را پیدا کرده و از آن استفاده کنید.

جدول کامل دستورات گیت به زبان فارسی

دسته بندی دستور (Command) توضیحات
راه‌اندازی اولیه (Setup) git config --global user.name "Your Name" نام کاربری گیت خود را تنظیم می‌کند
git config --global user.email "you@example.com" ایمیل گیت خود را تنظیم می‌کند
git config --list مشاهده تمام تنظیمات پیکربندی
مدیریت ریپازیتوری (Repository) git init یک ریپازیتوری (مخزن) جدید گیت را راه‌اندازی می‌کند
git clone <url> یک ریپازیتوری موجود را از یک آدرس (URL) کلون (کپی) می‌کند
git remote -v لیست ریپازیتوری‌های ریموت (از راه دور) پیکربندی شده را نمایش می‌دهد
git remote add origin <url> یک ریپازیتوری ریموت جدید اضافه می‌کند
ثبت تغییرات (Snapshotting) git status وضعیت فایل‌های موجود در پوشه کاری (Working Tree) را نشان می‌دهد
git add <file> یک فایل مشخص را برای کامیت شدن آماده (Stage) می‌کند
git add . تمام تغییرات را برای کامیت شدن آماده (Stage) می‌کند
git commit -m "message" تغییرات آماده شده (Staged) را با یک پیام ثبت (Commit) می‌کند
git commit --amend آخرین کامیت را ویرایش می‌کند
شاخه‌بندی و ادغام (Branching & Merging) git branch لیست تمام شاخه‌ها (Branches) را نمایش می‌دهد
git branch <name> یک شاخه جدید ایجاد می‌کند
git checkout <branch> به شاخه مورد نظر سوییچ می‌کند
git switch <branch> به شاخه مورد نظر سوییچ می‌کند (دستور جدیدتر و بهتر)
git switch -c <branch> یک شاخه جدید ساخته و به آن سوییچ می‌کند
git merge <branch> یک شاخه را در شاخه فعلی ادغام (Merge) می‌کند
git rebase <branch> شاخه‌ی فعلی را بر روی شاخه‌ی دیگر ریبیس (Rebase) می‌کند
git rebase -i HEAD~n n کامیت آخر را به صورت تعاملی (Interactive) ریبیس می‌کند
عملیات Rebase git rebase --abort یک عملیات ریبیس در حال انجام را لغو می‌کند
git rebase --continue ادامه عملیات ریبیس پس از حل تداخل‌ها (Conflicts)
عملیات ریموت (Remote) git fetch تغییرات را از ریپازیتوری ریموت دریافت (Fetch) می‌کند
git pull تغییرات را از ریموت دریافت (Fetch) و ادغام (Merge) می‌کند
git push کامیت‌ها را به ریپازیتوری ریموت ارسال (Push) می‌کند
git push -u origin <branch> شاخه را پوش کرده و آن را به عنوان شاخه بالادستی (Upstream) تنظیم می‌کند
مشاهده تاریخچه (Viewing History) git log تاریخچه کامل کامیت‌ها را نمایش می‌دهد
git log --oneline تاریخچه کامیت‌ها را به صورت خلاصه نمایش می‌دهد
git log --graph --oneline --all تاریخچه شاخه‌ها را به صورت گراف بصری نمایش می‌دهد
git show <commit> جزئیات یک کامیت خاص را نشان می‌دهد
git diff تغییرات آماده نشده (Unstaged) را نشان می‌دهد
git diff --staged تغییرات آماده شده (Staged) را نشان می‌دهد
git blame <file> نشان می‌دهد چه کسی هر خط از یک فایل را آخرین بار تغییر داده است
بازگرداندن تغییرات (Undoing Changes) git restore <file> تغییرات اعمال شده در یک فایل در پوشه کاری را لغو می‌کند
git restore --staged <file> یک فایل را از حالت آماده (Staged) خارج می‌کند
git reset تمام فایل‌ها را از حالت آماده (Staged) خارج می‌کند
git reset --hard تمام تغییرات (آماده شده و نشده) را لغو می‌کند
git revert <commit> یک کامیت جدید می‌سازد که تغییرات یک کامیت قبلی را خنثی می‌کند
ذخیره موقت (Stashing) git stash تغییرات را به صورت موقت ذخیره می‌کند
git stash pop آخرین stash را اعمال کرده و از لیست حذف می‌کند
git stash apply آخرین stash را اعمال می‌کند (بدون حذف از لیست)
git stash list لیست تمام stashها را نمایش می‌دهد
git stash drop آخرین stash را حذف می‌کند
تگ‌گذاری (Tagging) git tag لیست تمام تگ‌ها را نمایش می‌دهد
git tag <name> یک تگ جدید می‌سازد
git tag -a <name> -m "msg" یک تگ مشروح (Annotated) با پیام می‌سازد
git tag -d <name> یک تگ را حذف می‌کند
git push origin <tag> یک تگ را به ریپازیتوری ریموت پوش می‌کند
انتخاب کامیت (Cherry Picking) git cherry-pick <commit> یک کامیت مشخص را اعمال می‌کند
git cherry-pick <start>^..<end> محدوده‌ای از کامیت‌ها را اعمال می‌کند
عیب‌یابی (Bisecting) git bisect start جستجوی باینری برای پیدا کردن باگ را شروع می‌کند
git bisect bad کامیت فعلی را به عنوان کامیت خراب علامت‌گذاری می‌کند
git bisect good <commit> یک کامیت که سالم بوده را علامت‌گذاری می‌کند
git bisect reset عملیات bisect را متوقف و HEAD را ریست می‌کند
پاک‌سازی (Cleaning) git clean -n پیش‌نمایشی از فایل‌هایی که حذف خواهند شد نشان می‌دهد
git clean -fd فایل‌ها و پوشه‌های ردیابی نشده (Untracked) را حذف می‌کند
لاگ وقایع و بازیابی (Reflog & Recovery) git reflog تاریخچه تغییرات HEAD را نمایش می‌دهد
git checkout <reflog_id> یک کامیت از دست رفته را بازیابی می‌کند
بایگانی (Archiving) git archive --format zip --output out.zip HEAD از ریپازیتوری یک خروجی ZIP بدون پوشه .git می‌سازد
جستجو در گیت (Git Grep) git grep <pattern> فایل‌های ردیابی شده را برای یک الگو جستجو می‌کند
نام مستعار (Alias) git config --global alias.co checkout یک دستور میانبر ایجاد می‌کند
git config --global alias.lg "log --graph --oneline --all" یک نام مستعار برای لاگ گرافیکی و بصری می‌سازد
هوک‌های گیت (Git Hooks) .git/hooks/pre-commit قبل از انجام هر کامیت اجرا می‌شود
.git/hooks/post-merge بعد از یک عملیات ادغام (Merge) اجرا می‌شود
Worktrees git worktree add ../dir branch امکان کار همزمان روی چند شاخه را فراهم می‌کند