نکات طلایی Git
نکات مهم در خصوص git
-
در گیت هیچ مخزن اصلی وجود ندارد و ما تعیین کننده مخزن اصلی هستیم
-
گیت تغییرات رو دنبال می کنه نه ورژن ها رو
-
گیت تغییرات فایل های تصویری، چندرسانه ای و... را دنبال نمی کنه بلکه فقط ورژن اونها رو دنبال میکنه
-
در گیت 3 حالت تغییرات داریم workingdirectory, staged, commited
-
در گیت هد بر روی یک برنچ و کامیت قرار دارد که هد مشخص می کند الان بر روی چی داریم کار می کنیم
-
بهتر است در ویرایشگر کد خود پلاگین های مربوط به گیت را برای مدیریت بهتر نصب کنید
دستورات کاربردی
git --version: نسخه گیت نصب شده بر روی سیستم فعلیgit --help: راهنمای سیستم کنترل ورژن gitgit init: ایجاد ریپازیتوری (مخزن) خالی در مسیر جاریgit add: افزودن یک یا تمامی فایل های تغییر یافته به فضای استیجgit commit -m "Message": افزودن فایل های استیج بعنوان یک کامیت و تغییر نهاییgit commit -am "Message": افزودن به استیج و کامیت همزمان با آن (نکته : فقط فایل های قدیمی فایل های جدید را باید اول add کنیم)git commit --amend -m "Message": اصلاح آخرین کامیت ریکامیت میکنه با کامیت قبلgit status: وضعیت فعلی تغییرات را نشان میدهد ورکینگ دایرکتوری و استیج راgit merge: ادغام تغییرات از یک برنچ به برنچ دیگرgitignore.io: مرجعی جهت ایجاد هر چه بهتر فایل ایگنور (البته ide های مختلف هم راه های جالبی مثل این سایت دارند)touch .gitignore: ایجاد فایل ایگنورgit rm --cached -r [Files]: بعد از ایگنور فایلی که قبلا در کامیت ها بوده را به این شکل جدا میکنیم از پروژه.gitkeep: برای دنبال کردن پوشه های خالی توسط گیت معمولا فایلی با این پسوند در پوشه خالی ایجاد میشودgit ls-tree: لیست محتویات داخل یک کامیتgit branch: لیست برنچ های موجود در ریپازیتوری فعلیgit show: نمایش اطلاعات مربوط به یک commit، برچسب (tag) یا شیء Git
بازگردانی تغییرات ورکینگ دایرکتوری به آخرین تغییر در استیج یا در صورت نبودن در استیج به آخرین تغییر کامیت Unchange
git restore [Files]اصلیgit checkout -- [Files]بازگردانی به هد برنچ فعلی
بازگردانی تغییرات استیج شده به ورکینگ دایکتوری Unstage
git restore --staged [Files]اصلیgit reset HEAD [Files]بازگردانی به هدgit rm --cached -r [Files]برای اولین ترکینگ استفاده میشه و زمانی که یک فایل ایگنور شد و قبلا بوده در کامیت ها
پیکرندی
از طریق دستور زیر می توانید گیت را کانفیگ کنید.
git configبا اجرای این دستور میتوانید، تمامی گزینه های در دسترس را مشاهده کنید.
محل فایل پیکربندی
-
--[no-]global: تنظیمات در سطح کاربر فعلی سیستم عامل اعمال می شود.$home\gitconfig: مسیر فایل gitconfig global در ویندوز~\gitconfig: مسیر فایل gitconfig global در لینوکس
-
--[no-]system: تنظیمات در سطح کل سیستم عامل و کاربران آن اعمال می شود.program files\git\etc\gitconfig: مسیر فایل gitconfig system در ویندوزetc/gitconfig: مسیر فایل gitconfig system در ویندوز
-
--[no-]local: تنظیمات در سطح پروژه فعلی فقط اعمال می شود. (پیشفرض)myproject/.git/config: مسیر فایل gitconfig local در ویندوز و لینوکس
-
--[no-]worktree: تنظیمات در سطح worktree اعمال می شود. -
و...
اکشن های پیکربندی Git
--[no-]add: مقدار تنظیم جدید را اضافه میکنه به فایل تنظیمات : name value--[no-]get: دریافت مقدار : name [value-pattern]--[no-]replace-all: مقدار تنظیم جدید را با تنظیمات قبلی این مقدار جایگزین میکنه (پیشفرض) : name value [value-pattern]-l, --[no-]list: لیست تنظیمات موجود در فایل config (در تمامی سطوح)- و...
پیکربندی های کاربردی
init.defaultbranch: تغییر نام برنچ پیشفرض (در گیت پیشفرضmasterهست بهتره رویmainتنظیم بشه چرا که github ازmainپیشفرض استفاده میکنه)user.name: تنظیم کردن نام کاربر در گیت (بهتره نام و نام خانوادگی را در این مقدار قرار بدید)user.email: تنظیم کردن ایمیل کاربر در گیتauthor.name: تنظیم کردن نام نویسنده در گیتauthor.email: تنظیم کردن ایمیل نویسنده در گیتcommitter.name: تنظیم کردن نام کامیتر در گیتcommitter.email: تنظیم کردن ایمیل کامیتر در گیت- و...
Git Log
لیست کردن کامیت های ریپازیتوری فعلی
گزینه های کاربردی :
-n: چه تعداد کامیت لیست شود--since="str time": لیست کامیت های بعد از ...--after="str time": لیست کامیت های بعد از ...--until="str time": لیست کامیت های قبل از ...--before="str time": لیست کامیت های قبل از ...--author="author": لیست کامیت های نویسنده ای خاص--grep="REGEX": لیست کامیت ها بر اساس جستجوی عبارت با قائده (Global Regular Experation)--oneline: خلاصه کردن لیست کامیت ها در یک خطHASH HASH: لیست کردن کامیت ها از هش - تا هش.. HASH: لیست کردن کامیت ها تا هش -HASH ..: لیست کردن کامیت ها از هش - به بعد-p: تغییرات نیز همراه با لیست کامیت ها آورده میشوند--stat: تعداد حذف و اضافه و تعداد فایل های تغییر یافته را نیز لیست میکند--all: تمامی کامیت ها در برنچ ها را لیست میکند حتی کامیت های جلوتر از برنچ فعلی را
یک لاگ عالی که میتوانید با فرمان Git Lg به اون دسترسی داشته باشید
git config --global alias.lg "log --all --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
Git Checkout
سوئیچ بین برنچ های موجود در ریپازیتوری ها
گزینه های کاربردی :
git checkout HASH -- [Files]از کامیت نامبرده یک برنچ موقت ایجاد میکنه که شما میتونید از کامیت اطلاعات مورد نیاز را بردارید و بعد یا سوئیچ کنید به برنچ قبلی یا اینکه برنچ موقت را بعد از سوئیچ بعنوان یک برنچ جدید سیو کنید ، با تعیین فایل میتوانید تنها فایل مد نظر را از کامیت به برنچ فعلی وارد کنید موقتا و از اطلاعات اون بهره ببرید
Git Diff
git diff: مشاهده تغییرات ورکینگ دایرکتوری با آخرین کامیت یا در صورت موجود بودن با آخرین استیجgit diff --staged: مشاهده تغییرات استیج با آخرین کامیتgit diff HEAD: مشاهده تغییرات ورکینگ دایرکتوری با هد (آخرین کامیت انجام شده)git diff FILE: مشاهده تغییرات یک فایل خاصgit diff HASH HASH: مقایسه تغییرات 2 کامیت با یکدیگرgit diff -b: در لیست تغییرات اسپیس ها رو ایگنور میکنهgit diff -w: در لیست تغییرات خط های خالی رو ایگنور میکنه
Git Stash
git stash: ذخیره تغییرات در استش با توضیح عنوان آخرین کامیتgit stash -m: ذخیره تغییرات در استش با توضیح سفارشیgit stash list: لیست استش های ذخیره شدهgit stash pop STASHNAME: بازگردانی اطلاعات استش به ورکینگ دایرکتوری و پاک کردن استشgit stash apply STASHNAME: بازگردانی اطلاعات استش به ورکینگ دایرکتوری بدون پاک کردن استش
Git Reset
بازگردانی به کامیت های قبل (تغییر هد پوینتر)
نکته مهم نکته : قبل از استفاده از reset حتما شناسه کامیت ها مهم خود را نگه دارید
git reset HASH --soft: Repo (Yes) Stage (No) Wdir (No) کاربرد بیشتر ایگنور کردن کامیت ها هستgit reset HASH --mixed (Default): Repo (Yes) Stage (Yes) Wdir (No)git reset HASH --hard: Repo (Yes) Stage (Yes) Wdir (Yes)