نکات:
محیط استیج یعنی وضعیت آماده کامیت کردن
- هد یکی از کامیتها یا تغییرات پایداری است که در یک شاخه وجود دارد. معمولا آخرین کامییتی است که کرده ایم
- نمایش تغییرات بر اساس برنامه diff -u انجام میگیرد.
- اول همه فایلهای untracked هستند یعنی گیت مواظب آنها نیست و بعد آن را add میکنیم و در اینصورت گیت آنها را میفهمد و مواظبت میکند یعنی میروند در محیط stage و بعدا آن را کامیت میکنیم و با این کار به محیط پایدار خواهند رسید
- وقتی از یک سایتی یک پروژه راکلون میکنیم اسم کامیت پایدار (معمولا HEAD) آن پروژه را میگذاریم origin و همچنان اسم آخرین نسخه پایدار سیستم خودم هم master خواهد بود
دستورات:
ایجاد پروژه و اقدامات اولیه
- ساختن یک پروژه گیت خالی که یک فولدر مخفی ایجاد میکند
$ git init
- کلون کردن یک پروژه در سیستم خود
$ git clone <URL.git>
- از پروژه فعلی یک ریپوزیتوری در سرور ایجاد کن و اسم آن را بگذار اوریجین و آدرس آن را هم باید ادمین سرور گیت به ما بدهد
$ git remote add origin URL
نمایش وضعیت و لاگ
- نمایش وضعیت فایلهای موجود در پوشه ای که گیت آن پوشه را در اختیار گرفته است:
$ git status
- مشاهده کارهایی که کردید
$ git log --stat --summary
- مشاهده کارهایی که کردید با تفاوت دیفها:
$ git log -p
- نمایش تغییرات کنونی با تغییرات هِد
$ git diff HEAD
- فایلهای محیط استیج چه تغییراتی داشته اند.-تفاوت هد و استیج را نشان میدهد
$ git diff --staged $ git diff --color
- نشان دادن تغییرات یک کامیت
$ git show <Hash Of Commit>
- نمایش جزییات یک تگ که بعنوان ورژن شناخته میشود:
$ git show <tag name>
- وضعیت را در سرور گیت نشان میدهد(باید بررسی شود)
$ git remote
اقدامات در stage و unstage
- یک فایل را از استیج بیرون بیاور
$ git reset file
- بازگشت به آخرین تغییرات در آن فایل-با این کار فایل اصلی که در هد است جایگزین فایلی میشود که در آن تغییرات اشتباه داده بودید
$ git checkout -- <FILE>
- حذف فایل stage شده موجود و تبدیل به unstage
$ git rm --cached <FileNames>
- حذف فولدر stage شده موجود و تبدیل به unstage
$ git rm --cached -r <FOLDER>
- پاک کردن یک فایل از گیت و فایلسیستم
$ git rm <file>
کامیت و تگ
- افزودن یک تغییر در استیج :
$ git add <File>
- افزودن یک تغییر در استیج:
$ git add -A
- انتقال تغییرات از استیج به کامیت:
$ git commit -m "message"
- بازگشت به آخرین کامیت(اگر استیج نشده باشد یعنی دستور اَد زده نشده باشد)
$ git checkout -- filename
- بازگشت به آخرین کامیت درصورتی که دستور اَد زده شده باشد
$ git reset HEAD filename
- نکته: tag میتواند به ما بگوید که کدام کامیت است که قابلیت ارائه به مشتری را دارد. یعنی مدیر پروژه در ذهن خودش حفظ نکند که کدام ورژن شماره یک است و کدام شماره نسخه دوم از برنامه است. معمولا شرکتها برای اینکه یک release از محصول بدهند در کامیت مطلوب یک تگ میزنند که تحت عنوان ورژن شماره خاص از محصول شناخته بشود.
- نکته: تگ بر روی کامیت زده میشود
- نمایش تگها
$ git tag
- زدن تک به آخرین کامیت :
$ git tag -a v2.0.1 -m " توضیحات در باره این تگ"
- به یک کامیت قدیمی یک تگ اختصاص دادیم:
$ git tag -a v1.3.9 <Hash Of custom commit> -m "توضیحات درباره تک"
- نمایش تمام تگهایی که در اول آن کاراکتر "وی" قرار دارد:
$ git tag -l "v*"
- نکته: اگر تغییر از نوع ایجاد تگ باشد، گیت آن را نمیفهمد. یعنی دستور git status ایجاد تگ را گزارش نمیدهد.(در نتیجه در دستور پوش هم چیزی به سرور اضافه نخواهد شد)
- تگ مورد نظر را به شاخه اوریجین در سرور اضافه کند
$ git push origin <TagName>
- تگها را به شاخه اوریجین در سرور گیت اضافه کن:
$ git push origin --tags
- رفتن به یک تگ(یعنی کامیتی که در آن تگ زده شده) در پروژه(نکته: اگر به یک تگ checkout کردیم برای ایجاد تغییرات باید یک برنچ ایجاد نماییم و تغییرات را به آن اعمال نماییم.)
$ git checkout <Tag name>
- پروژه ای که از سایت گرفتم را تغییر دادم. این تغییرات در شاخه مَستر سیستم خودم انجام گرفته است. اگر بخواهم این تغییرات را در برنچ اصلی سایت قرار بدهم باید از این دستور کمک بگیرم
$ git push origin master
- آخرین تغییراتی که در سایت وجود دارد که با نام اوریجین شناخته میشود را بگیرد و در شاخه مَستر سیستم خودم اَعمال کن
$ git pull origin master
- تغییرات مستر را به شاخه اوریجین که در سرور است اضافه کن:
$ git push origin master
برنچ
- نمایش تمامی برنچهای موجود
$ git branch
- ساختن یک برنج جدید:
$ git branch <Name>
- رفتن به برنچ دیگر(بکش بیرون اون رو):
$ git checkout <branchName>
- پاک کردن یک برنچ:
$ git branch -d <BranchName>
- برنجی که هِد در آن است را با برنج ذکر شده یکی میکند:
$ git merge <branchName>
- تنها مشاهده تغییرات سرور آنلاین(ریموت)- نکته: تغییرات به لوکال منتقل نمیشود
$ git fetch origin
کار با merge
- پس از اینکه با دستور fetch صحت تغییرات مخزن آنلاین را مشاهده کردیم، آن را با دستور زیر از مخزن آنلاین به لوکال منتقل میکنیم.(حتما باید نام برنج آورده بشود)
$ git merge origin/master
کار با blame
- نکته: وقتی یک باگ در یک فایل پیدا میکنیم git blame اجازه میدهد که آن را گردن یکی بیاندازید.
- تاریخچه تغییرات فایل را نشان میدهد
$ git blame <FileName>
- تاریخچه تغییرات لاین هشتم از فایل را نشان میدهد
$ git blame <FileName> -L8
- تاریخچه تغییرات لاین هشتم تا لاین دهم از فایل را نشان میدهد(نفر آخری که تغییرات را ایجاد کرده است)در پروژه
$ git blame <FileName> -L8,10
برخی تنظیمات ساختاری خود گیت
- میتوانیم توسط دستورات زیر نام کاربری یا ایمیل یا دیگر موارد را برای گیت فعلی تنظیم نماییم
$ git config --global user.name برخی تنظیمات $ git config --global user.name "Your Full Name" $ git config --global user.email you@somewhere.com