Skip to content

دستورات گیت مرجع سریع

دستورات گیت که واقعاً به کار می‌آیند، گروه‌بندی‌شده بر اساس کار: راه‌اندازی مخزن، ثبت وضعیت کار، شاخه‌بندی و ادغام، خواندن تاریخچه، همکاری با رموت، جبران اشتباه، کنار گذاشتن کار و مدیریت فایل‌ها و زیرماژول‌ها. هر سطر فرمان را با یک فراخوانی واقعی جفت می‌کند.

گیت صدها دستور دارد، اما کار روزمره فقط به چندتای آنها نیاز دارد. مدل ذهنی این است: working tree فایل‌های شماست، ایندکس (staging area) commit بعدی است و HEAD همان commit فعلی است. stage می‌کنید، commit می‌کنید، به اشتراک می‌گذارید. وضعیت را زیاد بخوانید. همه موارد زیر فرض می‌کنند دستوری که فهرست شده از قبل وجود دارد.

جدول مرجع · 55 مورد
55 of 55 rows
راه‌اندازی و پیکربندی
نام، ایمیل یا ویرایشگر خود را یک بار برای همه مخازن تنظیم می‌کند.git config --global user.name "Ada"
برای دستوری که زیاد تایپ می‌کنید یک نام میان‌بر تعریف می‌کند.git config --global alias.co checkout
یک مخزن جدید در پوشه فعلی می‌سازد.git init
یک مخزن رموت را روی دستگاه شما کپی می‌کند.git clone git@github.com:org/repo.git
فقط جدیدترین commitهای یک شاخه را کپی می‌کند.git clone --depth 1 --single-branch git@github.com:org/repo.git
مبانی snapshot
نشان می‌دهد چه چیزی stage شده، تغییر یافته و ردیابی‌نشده است.git status -sb
تغییرها را stage می‌کند تا وارد commit بعدی شوند.git add src/app.ts
تغییرها را hunk به hunk بازبینی می‌کند و فقط آنچه را می‌پذیرید stage می‌کند.git add -p src/app.ts
تغییرهای همه فایل‌های ردیابی‌شده را stage می‌کند بدون افزودن فایل جدید.git add -u
تغییرهای stageشده را به‌عنوان یک commit جدید ثبت می‌کند.git commit -m "fix: null check"
آخرین commit را با نسخه اصلاح‌شده جایگزین می‌کند.git commit --amend -m "fix: handle empty input"
تغییرهای stageنشده را نشان می‌دهد، یا stageشده را با --staged.git diff --staged
همه تغییرها از آخرین commit به بعد را نشان می‌دهد، stage شده یا نه.git diff HEAD
شاخه‌بندی و ادغام
فهرست‌کردن، ساخت یا حذف شاخه‌ها.git branch feature-x
حذف یک شاخه mergeشده (-D آن را اجباری حذف می‌کند، -a همه شاخه‌ها را فهرست می‌کند).git branch -d feature-x
جابه‌جایی بین شاخه‌ها (جایگزین مدرن checkout).git switch feature-x
در یک قدم شاخه جدید می‌سازد و به آن سوییچ می‌کند.git switch -c feature-x
جابه‌جایی بین شاخه‌ها یا بازگردانی فایل‌ها (دستور قدیمی‌تر و عام‌تر).git checkout feature-x
تغییرهای شاخه دیگر را وارد شاخه فعلی می‌کند.git merge feature-x
ادغام پرتعارض را لغو و شاخه را به وضعیت پیشین برمی‌گرداند.git merge --abort
commitهای شاخه فعلی را روی شاخه دیگر بازپخش می‌کند.git rebase main
در حین بازپخش، commitها را ادغام، جابه‌جا یا ویرایش می‌کند.git rebase -i main
یک commit واحد را از شاخه دیگر روی این شاخه کپی می‌کند.git cherry-pick a1b2c3d
یک commit را با برچسبی خوانا مثل شماره نسخه علامت می‌زند.git tag -a v1.2.0
یک شاخه دیگر را هم‌زمان در پوشه‌ای جدا checkout می‌کند.git worktree add ../repo-feature feature-x
بررسی تاریخچه
پیمایش تاریخچه commitها.git log --oneline --graph --decorate
تاریخچه را از همه شاخه‌ها پیمایش می‌کند، نه فقط شاخه فعلی.git log --oneline --graph --all
diff کامل و پیام یک commit را نشان می‌دهد.git show HEAD
نشان می‌دهد چه کسی آخرین بار هر خط فایل را تغییر داده است.git blame src/app.ts
هر commitی را که HEAD به آن اشاره کرده نشان می‌دهد، حتی دورریخته‌ها.git reflog
تاریخچه را دوبخشی جست‌وجو می‌کند تا commit خراب‌کننده پیدا شود.git bisect start
خلاصه‌کردن commitها بر اساس نویسنده.git shortlog -sn
commit فعلی را با شمارش از نزدیک‌ترین تگ نام‌گذاری می‌کند.git describe --tags
همکاری با رموت
فهرست‌کردن یا افزودن مخازن رموت.git remote add origin <url>
رموت‌ها را با نشانی fetch و pushشان فهرست می‌کند.git remote -v
تغییرهای رموت را بدون دست‌زدن به شاخه‌های شما دانلود می‌کند.git fetch origin
تغییرهای رموت را دانلود و ارجاع به شاخه‌های حذف‌شده رموت را می‌اندازد.git fetch --prune
تغییرهای رموت شاخه فعلی را fetch و merge می‌کند.git pull --rebase
commitهای محلی را به رموت می‌فرستد.git push -u origin feature-x
شاخه رموت را بازنویسی می‌کند، اما فقط اگر کسی قبل از شما push نکرده باشد.git push --force-with-lease origin feature-x
خنثی‌کردن تغییرات
تغییرهای working tree را دور می‌ریزد، یا آنها را unstage می‌کند.git restore src/app.ts
یک فایل را unstage می‌کند و ویرایش‌هایش را در working tree نگه می‌دارد.git restore --staged src/app.ts
نوک شاخه فعلی و در صورت تمایل index را جابه‌جا می‌کند.git reset --hard HEAD~1
یک commit جدید می‌سازد که commitی قبلی را خنثی می‌کند (برای اشتراک امن).git revert HEAD
فایل‌ها و پوشه‌های ردیابی‌نشده را حذف می‌کند.git clean -fd
کنار گذاشتن کار (stash)
کار commitنشده را ذخیره و working tree را بازنشانی می‌کند.git stash -u
همه stashهایی را که ذخیره کرده‌اید نشان می‌دهد.git stash list
یک stash را دوباره اعمال می‌کند و آن را در فهرست نگه می‌دارد.git stash apply stash@{1}
یک stash را که دیگر لازم نیست حذف می‌کند.git stash drop stash@{1}
جدیدترین stash را دوباره اعمال و سپس حذف می‌کند.git stash pop
فایل‌ها و زیرماژول‌ها
یک فایل را جابه‌جا یا تغییر نام می‌دهد و تغییر را stage می‌کند.git mv old.ts src/new.ts
یک فایل را حذف و حذفش را stage می‌کند.git rm src/old.ts
یک مخزن دیگر را به‌صورت پوشه‌ای درون این مخزن ردیابی می‌کند.git submodule add git@github.com:org/lib.git lib
فقط پوشه‌هایی را که نام می‌برید از یک مخزن بزرگ checkout می‌کند.git sparse-checkout set src docs
درخت یک commit را به‌صورت فایل tar یا zip برون‌بری می‌کند.git archive -o repo.zip HEAD