برای بهبود گردش کارتان از این برگه تقلب (cheat sheet) سودمند git استفاده کنید. وقتی در لحظه نمی توانید یک دستور را به یاد بیاورید یا نمی خواهید از git help در خط فرمان استفاده کنید، این برگه تقلب git باعث صرفه جویی در وقتتان می شود. به خاطر سپردن تمام دستورهای مهم git کار سختی است، پس این نسخه را چاپ کنید یا آن را در دسک تاپ خود ذخیره کنید تا وقتی دچار مشکل شدید؛ به آن مراجعه کنید. این برگه هم دستورهای پایه ای git و هم مفاهیم پیشرفته تر در مورد شاخه های git، مخازن remote، لغو تغییرات و موارد دیگر را شامل می شود.
دستورات پایه ای GIT | GIT BASICS | |
یک مخزن git خالی در مسیر مشخص شده ایجاد می کند. برای آن که مسیر فعلی، مخزن اولیه git شناخته شود؛ این دستور را بدون هیچ ورودی ای اجرا کنید. | <git init <directory | |
مخزن واقع در <repo> را به دستگاه محلی، clone می کند. <repo> اصلی را می توان از طریق HTTP یا SSH در سیستم فایل محلی یا یک دستگاه remote قرار داد. | <git clone <repo> | |
نام نویسنده را تعریف می کند تا برای همه commit ها، در مخزن فعلی استفاده شود. توسعه دهندگان به طور معمول از پرچم global-- برای تنظیم گزینه های پیکربندی، برای کاربر فعلی استفاده می کنند. | git config user.name <name> | |
تمام تغییرها در <directory>را برای commit بعدی stage می کند. برای تغییر یک فایل خاص، <directory> را با یک <file> جایگزین کنید. | git add <directory> | |
تغییرها قرار گرفته در stage را commit می کند؛ اما به جای راه اندازی ویرایشگر متن، از <message> به عنوان پیام commit استفاده کنید. | git commit -m "<message>" | |
لیستی از فایل های staged، unstaged و ردیابی نشده ارائه می دهد. | git status | |
با استفاده از فرمت پیش فرض، کل تاریخچه commit ها را نشان می دهد. برای شخصی سازی بقیه گزینه ها را ببینید. | git log | |
تغییرات stage نشده بین مسیر کاری و index تان را نشان می دهد. | git diff | |
*توجه: در تمامی دستورات عبارات داخل تگ (< >) را با مقدار اصلی مربوط به پروژه خودتان جایگزین کنید.
لغو تغییرات | UNDOING CHANGES | |
یک commit جدید ایجاد کرده که تمامی تغییرات ایجاد شده در <commit> را لغو می کند، سپس آن را به شاخه فعلی اعمال می کند. | git revert <commit> | |
<file> را از ناحیه stage حذف می کند اما مسیر مربوطه را بدون تغییر می گذارد. یک فایل را بدون اضافه کردن هیچ تغییری unstage می کند. | git reset <file> | |
فایل هایی را که از مسیر کاری حذف می شوند، نشان می دهد. برای اجرای تمیز از پرچم -f به جای پرچم -n استفاده کنید. | git clean -n | |
بازنویسی تاریخچه GIT | REWITING GIT HISTORY | |
commit آخر را با تغییرات stage شده و آخرین commit ترکیب شده، جایگزین می کند. برای ویرایش پیام commit آخر به همراه stage خالی استفاده کنید. | git commit --amend | |
شاخه فعلی را روی <base>، قرار می دهد (rebase می کند). <base> می تواند شناسه commit، نام شاخه، یک برچسب یا مرجع وابسته به HEAD باشد. | git rebase <base> | |
ثبت تغییرها در HEAD مخزن محلی را نشان می دهد. برای نمایش اطلاعات تاریخ، پرچم –relative-date یا برای نمایش همه منابع پرچم –all را اضافه کنید. | git reflog | |
شاخه های GIT | GIT BRANCHES | |
همه شاخه های موجود در مخزن را لیست می کند. برای ایجاد شاخه جدید با نام <branch> در ادامه دستور <branch> را اضافه کنید. | git branch | |
یک شاخه با نام <branch> ایجاد و checkout می کند. پرچم -b را حذف کنید تا شاخه موجود checkout شود. | git checkout -b <branch> | |
<branch> را به شاخه فعلی ادغام می کند. | git merge <branch> | |
مخزن های REMOTE | REMOTE REPOSIRORIES | |
یک connection جدید با یک مخزن remote جدید برقرار می کند. بعد از افزودن یک remote می توانید با استفاده از <name> به عنوان یک میانبر برای <url> در دستورها دیگر استفاده کنید. | git remote add <name> <url> | |
شاخه مشخصی (با نام <branch>) را از مخزن دریافت می کند. برای گرفتن همه منابع از remote، <branch> (نام شاخه) را حذف کنید. | git fetch <remote> <branch> | |
یک نسخه از شاخه فعلی مخزن remote دریافت کرده و بلافاصله آن را در نسخه local ادغام می کند. | git pull <remote> | |
شاخه را همراه commit ها به مخزن <remote>، push می کند. در صورت نبود شاخه در مخزن remote، آن را ایجاد می کند. | git push <remote> <branch> | |
پیکربندی GIT | GIT CONFIG | |
نام نویسنده را مشخص می کند تا برای همه commit های کابر استفاده شود. | git config --global user.name <name> | |
ایمیل نویسنده را مشخص می کند تا برای همه commit های کابر استفاده شود. | git config --global user.email <email> | |
برای یک دستور git، میانبر ایجاد می کند. برای مثال دستور alias.glog “log --graph --oneline”, alias.glog را برابر با git log --graph –oneline تنظیم می کند. | git config --global alias <alias-name> <git-command> | |
ویرایشگر متن استفاده شده با دستورها را برای همه کاربران دستگاه، تنظیم می کند. <editor> باید دستوری باشد که ویرایشگر مورد نظر را راه اندازی می کند (برای مثال vi). | git config --system core.editor <editor> | |
فایل پیکربندی global را در یک ویرایشگر متن برای ویرایش دستی باز می کند. | git config --global --edit | |
GIT LOG | ||
تعداد commit ها را با استفاده از <limit> محدود می کند. برای مثال ”git log -5” به نمایش پنج commit محدود خواهد شد. | git log -<limit> | |
هر commit را به یک خط محدود می کند. | git log --oneline | |
تفاوت کامل هر commit را نمایش می دهد. | git log -p | |
شامل فایل هایی که تغییر داده شده اند و تعداد نسبی خطوطی که در هر یک از آن ها اضافه یا حذف شده است، می شود. | git log --stat | |
commit های مربوط به یک نویسنده خاص را جستجو می کند. | git log --author=”<pattern>” | |
commit هایی که پیام آن ها با <pattern> مطابقت دارند را جستجو می کند. | git log --grep=”<pattern>” | |
commit هایی را که بین <since> و <until> رخ داده اند را نمایش می دهد. ورودی ها می توانند شناسه یک commit، نام شاخه، HEAD یا هر نوع مرجع قابل بازبینی ای باشد. | git log <since>..<until> | |
فقط commit های مربوط به فایل مشخص شده را نمایش می دهد. | git log -- <file> | |
پرچم --graph یک نمودار مبتنی بر متن از commit ها در سمت چپ پیام های commit ها می کشد. --decorate نام شاخه ها یا برچسب های commit های نشان داده شده را اضافه می کند. | git log --graph --decorate | |
GIT DIFF | ||
تفاوت های بین مسیر کاری و آخرین commit را نشان می دهد. | git diff HEAD | |
تفاوت های بین تغییرهای stage شده و آخرین commit را نشان می دهد. | git diff --cached | |
GIT RESET | ||
ناحیه stage را مجدد تنظیم می کند تا با آخرین commit مطابقت داشته باشد.، اما مسیر کاری را بدون تغییر می گذارد. | git reset | |
ناحیه stage و مسیر مربوط به آن را مجدد تنظیم می کند تا با آخرین commit مطابقت داشته باشد و همه تغییرها را در مسیر کاری بازنویسی می کند. | git reset --hard | |
شاخه فعلی را به قبل از <commit> منتقل می کند، ناحیه stage را دوباره تنظیم می کند تا مطابقت داشته باشد اما مسیر کاری را بدون تغییر می گذارد. | git reset <commit> | |
مانند دستور قبلی، اما هم ناحیه stage و هم مسیر کاری را دوباره تنظیم می کند. تغییرات commit نشده و تمام commit های بعد <commit> را حذف می کند. | git reset --hard <commit> | |
GIT REBASE | ||
شاخه فعلی را مجدد روی <base> قرار می دهد. ویرایشگر را به جهت وارد کردن دستورها، برای چگونگی انتقال هر commit به base جدید راه اندازی می کند. | git -i <base> | |
GIT PULL | ||
نسخه ای از شاخه فعلی remote را گرفته و آن را دوباره در نسخه محلی پایه گذاری می کند. برای یکی کردن شاخه ها به جای merge از git rebase استفاده کنید. | git pull --rebase <remote> | |
GIT PUSH | ||
git push را را حتی اگر موجب یک merge به صورت non-fast-forward بشود، مجبور به اجرا می کند. از --force استفاده نکنید مگر اینکه از کاری که انجام می دهید مطمئن باشید. | git push <remote> --force | |
تمامی شاخه های محلی را به remote مشخص شده، push می کند. | git push <remote> --all | |
وقتی که یک شاخه را push می کنید یا از --all استفاده می کنید، برچسب ها خود به خود push نمی شوند. ولی استفاده از --tags تمام برچسب های local شما را به مخزن remote می فرستد. | git push <remote> --tags | |