# ایجاد یک پروژه محلی و معرفی آن به گیت
در پوشه جاری پوشهای با نام انتخابی ایجاد میگردد که حاوی پوشه "دات.گیت" است.
git init “Project-Name”
معرفی پروژه محلی به گیت
git init
تعریف نام و ایمیل جهت مشخص بودن کامیت کننده برای همه پروژه ها
git config –global user.name “Name”
git config –global user.email “Email”
تعریف نام و ایمیل جهت مشخص بودن کامیت کننده برای پروژه جاری
git config –local user.name “Name”
git config –local user.email “Email”
همگام کردن یا فرستادن پروژه محلی با یک پروژه در سرور با نام "ایکس" و انتقال آن به آدرس "یو.آر.ال"
git remote add <X> <url>
آوردن پروژه از سرور راه دور به سیستم محلی
git clone <url>
مشاهده فایل های تغییر یافته و بررسی وضعیت فایل ها
git status
وارد کردن فایل مورد نظر به مرحله استیجینگ
git add <file_name>
وارد کردن فایل های جاری تغییر کرده به مرحله استیجینگ بردن تمامی فایلهای تغییر یافته و جدید از دایرکتوری جاری و زیرشاخههای آن به مرحلهی استیجینگ
git add .
بردن تمامی تغییرات (اضافه شدن، تغییر کردن و حذف شدن فایلها) در کل مخزن ریپوزیتوری به مرحلهی استیجینگ، حتی اگر در دایرکتوری والد باشند.
git add –A
ایجاد کامیت جدید برای فایل های درون استیج
git commit –m “Comment”
دریافت و مشاهده تغییرات موجود روی سرور ریموت بدون اعمال آن روی پروژه محلی
git fetch
دریافت تغییرات موجود روی سرور ریموت و مرج کردن آن ها با پروژه محلی
git pull <remote-name> <branch-name>
انتقال برنچ جدید به سرور
git push –u <remote-name> <branch-name>
حذف فایل مورد نظر از ریپوزیتوری
git rm <file_name>
مشاهده برنچ جاری
git branch
مشاهده همه برنچ های محلی
git branch –v
مشاهده همه برنچ های محلی و ریموت
git branch –a
ساخت برنچ جدید
git branch <branch-name>
انتقال به برنچ مورد نظر
git checkout <branch-name>
git switch <branch-name>
ایجاد یک برنچ جدید و انتقال به آن
git checkout -b <branch-name>
مرج برنچ موردنظر با برنچ جاری
git merge <branch-name>
باز کردن فایل و رفع کانفیلیکت ها
vim <file_name>
ذخیره تغییرات و خروج از حالت ویرایش فایل ایتدا دکمه اسکیپ را فشار دهید
:wq
ذخیره تغییرات ناتمام نسبت به کامیت قبلی بدون ایجاد کامیت جدید
git stash
بازیابی حالت ذخیره شده پروژه
git stash apply
حذف استش مورد نظر
git stash drop
مشاهده تفاوت فایل مورد نظر نسبت به آخرین استیج
git diff <file_name>
مشاهده تفاوت فایل های استیج شده نسبت به کامیت آخر
git diff –staged <file_name>
مشاهده تفاوت کنونی فایل ها به آخرین کامیت
git diff HEAD
مشاهده لیست تگ های موجود
git tag
زدن یک تگ با نام دلخواه روی آخرین کامیت
git tag < tag-name>
حذف تگ موردنظر
git tag –d <tag-name>
انتقال تگ های خود به سرور
git push –tags
ارسال یک تگ خاص به ریموت
git push origin <tag_name>
حذف یک تگ خاص از ریموت
git push --delete origin <tag_name>
مشاهده تاریخچه کامیت ها
git log
مشاهده "اِن" کامیت گذشته
git log –a <n>
مشاهده کامیت ها بصورت مختصر (دریک خط)
git log –online
مشاهده خط در کنار کامیت ها که نماینگر ساختار درختی و سلسله مراتب کامیت هاست
git log –gragh –decorate
نمایش کامیتها با جزئیات (شامل تغییرات هر کامیت)
git log –p
مشاهده فقط نویسنده و تاریخ کامیتها
git log --pretty=format:"%h - %an, %ar : %s"
o %h: هش کوتاهشده کامیت.
o %an: نام نویسنده.
o %ar: زمان نسبی (مانند "2 days ago").
o %s: پیام کامیت.
مشاهده کامیتهای یک شاخه خاص
git log <branch_name>
مشاهده کامیتهای یک فایل خاص
git log <file_path>
مشاهده کامیتهای یک نویسنده خاص
git log --author="Author Name”
مشاهده کامیتهای یک تاریخ خاص
git log --since="2 weeks ago”
ترکیب چند مورد باهم
git log --oneline --author="Bastami" --since="1 week ago”
مشاهده کامیت های تغییر دهنده فایل مورد نظر
git log - <file_name>
خارج شدن از حالت دیدن لاگ
q
حذف تغییرات فایل مورد نظر و برگرداندن آن به نسخه آخر کامیت
git restore <file-name>
درآوردن تغییرات استیج شده از ناحیه استیجینگ ضمن نگه داشتن خود تغییرات
git restore –staged <file-name>
بازگشت به کامیتی در گذشته و حذف کامیت های میانی (بصورت دائمی- در حالت کار کردن روی پروژه بصورت گروهی بجای ریست از ریورت استفاده شود!)
git reset <commit-hash>
بازگشت به کامیتی در گذشته و حذف کامیت های میانی بدون درنظر گرفتن فایل های تغییر داده شده (بصورت دائمی- در حالت کار کردن روی پروژه بصورت گروهی بجای ریست از ریورت استفاده شود!)
git reset --hard <commit-hash>
اگر تاریخچهی کامیتهای شما به این شکل باشد
A --- B --- C --- D --- E (HEAD)
و بخواهید به "بی" برگردید و "سی" و "دی" و "ای" را حذف کنید، دستور زیر را اجرا کنید
git reset --hard B
تاریخچه به صورت زیر می شود
A --- B (HEAD)
بازگشت به کامیتی در گذشته و باقی ماندن تغییرات در فایل ها (فایل های به حالت آن.استیج خواهد رفت)
git reset --soft <commit-hash>
جهت بازگشت به کامیتی در گذشته زمانی که مخزن شما به ریموت (مثلا گیت هاب) متصل است
git revert <commit-hash>..HEAD
اگر تاریخچهی کامیتهای شما به این شکل باشد
A --- B --- C --- D --- E (HEAD)
و بخواهید به "بی" برگردید و "سی" و "دی" و "ای" را حذف کنید، دستور زیر را اجرا کنید
git revert C..HEAD
مختصر نویسی دستورات گیت برای همه پروژه ها (اگر فقط میخواهید برای پروژه جاری، دستورات نختصر تعریف کنید، گلوبال را بردارید)
git config --global alias.<alias-name> <real-name>
git config --global alias.glog log
روش دوم
alias –global <alias-name>= <real-name>
alias –global glog=”git log”
حذف کردن یک اسم مختصر تعریف شده
git config –global --unset alias.glog
- در صورت پاک نشدن دستور کش شده و کافی است گیت بش را بسته، مجددا باز نمایید. در غیر اینصورت از فایل کانفیگ موجود در پوشه "دات.گیت" بصورت دستی پاک کنید)
شروع عملیات جستجو برای پیدا کردن کامیت دارای باگ
git bisect start
مشخص کردن کامیت خوب یا بدون باگ
git bisect good < hash_of_good_commit>
مشخص کردن کامیت بد یا دارای باگ
git bisect bad < hash_of_bad_commit>
پایان عملیات
git bisect reset
اعمال تغییرات کامیت مورد نظر روی برنچ کنونی طی یک کامیت جدید
git cheryy-pick <commit>