ترفندهای گیت
آناستیج کردن فایلها
برای خارجکردن یک فایل از staging بدون از دست دادن تغییرات:
git restore --staged نامفایل
مشاهدهی reflog
گیت تمام تغییرات HEAD را حتی بعد از reset در یک لیست داخلی نگه میدارد. اگر اشتباهاً یک کامیت را پاک کردید، reflog آن را پیدا میکند:
git reflog
با هش کامیت پیدا شده میتوانید آن را بازیابی کنید:
git checkout هشکامیت
لاگ تمیز و رنگی
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
برای آسانتر شدن، یک alias بسازید:
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
بعد از این فقط git lg بنویسید.
خلاصهی مشارکتها
برای دیدن تعداد کامیتها به تفکیک نویسنده:
git shortlog -sn
نمایش فایلهای تغییریافته در یک کامیت
git show --name-only هشکامیت
اضافه کردن تغییرات به آخرین کامیت
اگر بعد از کامیتکردن چیز کوچکی را فراموش کردید:
git add فایلفراموششده
git commit --amend --no-edit
گزینهی --no-edit پیام کامیت را تغییر نمیدهد.
توجه: از amend فقط روی کامیتهایی که push نشدهاند استفاده کنید.
کپیکردن آدرس ریموت
git remote get-url origin
جستجو در محتوای کامیتها
برای یافتن اینکه کدام کامیت یک رشتهی متنی را اضافه یا حذف کرده:
git log -S "متنموردجستجو" --oneline
نمایش تغییرات یک کامیت
git show هشکامیت
مقایسهی فایل با نسخهی قبلی
برای دیدن تفاوت یک فایل نسبت به ۲ کامیت قبل:
git diff HEAD~2 -- نامفایل
ریستکردن یک فایل به نسخهی یک کامیت خاص
git checkout هشکامیت -- نامفایل
کامیت خالی
گاهی برای راهاندازی CI یا تست یک کامیت بدون تغییر لازم است:
git commit --allow-empty -m "trigger CI"
پیدا کردن آخرین تگ
git describe --tags --abbrev=0
تعداد کامیتهای یک برنچ
git rev-list --count نامبرنچ
آرشیو گرفتن از پروژه
برای ساختن یک فایل zip از وضعیت فعلی پروژه:
git archive --format=zip HEAD > project.zip