10 نکته ی مفید Git

گردآوری و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 27 بهمن 1397
دسته بندی ها : آموزشی

در سال های اخیر Git محبوبیت زیادی پیدا کرده و یکی از پراستفاده ترین سیستم های کنترل ورژن جهان است. این سیستم برای توسعه دهندگان امکانات مختلفی داره و در زبان های مختلف برنامه نویسی, تیم های کوچک و بزرگ, از پروژه های کوچک متن باز گرفته تا پروژه های بزرگی مثل کرنل لینوکس کارایی داره.

در این مقاله میخواهیم چند نکته ی گیت رو به اشتراک بگذاریم که میتونه تجربه ی گیت و گردش کار شما رو بهبود ببخشه.

git log --no-merges

این دستور git تمام تاریخچه ی commit رو نشون میده اما commit هایی که دو شاخه رو با هم ادغام کرده یا یک ناسازگاری merge (ادغام) رو برطرف کرده رو نادیده میگیره. این به شما اجازه میده تا تغییرات روی پروژه رو بدون اینکه ادغام commit ها مشکلی در تاریخچه گیت بوجود بیاره, به سرعت ببینید.

$git log --no-merges

commit e75fe8bf2c5c46dbd9e1bc20d2f8b2ede81f2d93
Author:  John
Date:   Mon Jul 10 18:04:50 2017 +0300

    Add new branch.

commit 080dfd342ab0dbdf69858e3b01e18584d4eade34
Author:  John
Date:   Mon Jul 11 15:40:56 2017 +0300

    Added index.php.

commit 2965803c0deeac1f2427ec2f5394493ed4211655
Author:  John
Date:   Mon Jul 13 12:14:50 2017 +0300

    Added css files.

[git revert --no-commit [commit

سیستم بازگردانی در گیت یک کامیت جدید تولید کرده که تغییراتی که توسط کامیت های فعلی انجام شدند رو بازگردانی میکنه و یک کامیت جدید با محتوای جدید تولید میکنه. اگر شما بخواهید کامیت های نامگذاری شده رو بازگردانی کنید و از کامیت های خودکار جلوگیری کنید, شما میتونید از تگ --no-commit یا shorthand -n استفاده کنید.

git diff -w

دستور fit diff تغییرات بین دو کامیت, دو درخت درحال کار یا دو فایل در دیسک رو نشون میده. وقتی چندین نفر روی یک پروژه کار می کنند, معمولا تغییراتی به واسطه ی تب ویرایشگر و تنظیمات فضا وجود داره. تفاوت هایی که در زمان مقایسه خطوط و توسط فاصله های سفید بوجود اومده رو توسط دستور ذکر شده به همراه تگ w- نادیده می گیرید.

git diff --stat

این دستور نشون میده که هرفایل در طول زمان به چه صورتی تغییر یافته. شما میتونید 3 پارامتر اضافه کنید : width برای بازنویسی طول خروجی پیش فرض, name-width برای تنظیم طول نام فایل و count برای محدود کردن خروجی به چند خط اول.

$ git diff --stat
 index.php | 83 +++++++++++++++++++++++++++++---------------------------
 1 file changed, 43 insertions(+), 40 deletions(-)


$ git diff --stat-width=10
 index.php | 83 +++---
 1 file changed, 43 insertions(+), 40 deletions(-)

^git reset --soft HEAD

با اجرای این دستور head رو بدون تغییر فایل index و درخت کار به یک کامیت خاص تنظیم کنید. تمام تغییراتی که بعد از این کامیت انجام بشه به بخش "staged for commit" منتقل میشه. بعد از این کافیه شما دستور git commit رو اجرا کنید تا اونها رو به عقب برگردونید.

[git stash branch [branch-name] [stash

این دستور یک شاخه جدید با نامی که تعیین کردید (اینجا branch-name) میسازه و سپس تغییرات stash داده شده رو اعمال کرده و stash رو بیرون میاندازه. اگر هیچ stash داده نشه, از آخرین استفاده مورد میکنه. این به شما اجازه میده تا هر تغییر پنهان و stash شده ای رو در یک محیط امن تر اعمال کنید, که بعدا میتونه با master ادغام بشه.

git branch -a

این یک لیست از تمام شاخه های محلی و دنبال شده (بصورت ریموت) نمایش میده. شما میتونید با استفاده از تگ merged-- برای فقط شاخه هایی که بصورت کامل با شاخه master ادغام شدند رو ببینید. با این روش شما میتونید شاخه هاتون رو ردیابی کنید و بررسی کنید که چه شاخه هایی دیگه استفاده نمیشه و میتونه حذف بشه.

$ git branch -a

  dev
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev

git commit --amend

با دستور git commit --amend شما میتونید بجای ساخت کامیت جدید, کامیت قبلی رو تغییر بدید. اگر شما تغییرات رو به شاخه ریموت push ندادید, میتونید از این دستور برای اصلاح آخرین کامیت, افزودن آخرین تغییرات و حتی تغییر پیام کامیت استفاده کنید.

git pull --rebase

دستور git pull --rebase گیت رو مجبور میکنه تا اول تغییرات رو pull کنه و سپس کامیت های push نشده رو در بالای آخرین نسخه شاخه ریموت قرار بده. گزینه ی rebase-- برای اینه که از ادغام غیر ضروری کامیت ها جلوگیری بشه. 

git add -p

وقتی شما از این دستور استفاده می کنید به جای اینکه تمام تغییرات بلافاصله به index اضافه بشه, از هر تغییر عبور میکنه و از شما می پرسه که میخواهید باهاش چکار کنید. با این روش به شما اجازه میده بصورت کاملا تعاملی دقیقا چیزی که میخواهید کامیت بشه رو انتخاب کنید.

diff --git a/package.json b/package.json
index db78332..a814f7e 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,6 @@
   },
   "devDependencies": {
     "bootstrap-sass": "^3.3.7",
-    "gulp": "^3.9.1",
     "jquery": "^3.1.0",
     "laravel-elixir": "^6.0.0-11",
     "laravel-elixir-vue-2": "^0.2.0",
Stage this hunk [y,n,q,a,d,/,e,?]? 

منبع

مقالات پیشنهادی

10 نکته مهم در طراحی رابط کاربری

یک وبسایت فراتر از چند برگه که از طریق لینک‌ها با همدیگر متصل شده‌اند است. در این حیطه رابط کاربری وجود دارد، فضایی که افراد مختلفی به آن وارد شده و ا...

10 ابزار مفید برای برنامه‌نویسان

براساس تعداد خط کدی که دارید، گاهی اوقات برنامه‌نویسی بسیار سخت و غیر قابل کنترل می‌شود. در صورتی که در چنین حالتی دچار مشکلاتی بشوید و یا با باگ‌هایی...

10 نکته برای تستینگ بهتر – بخش دوم

تمام وبسایت‌ها باید به راحتی برای همه افراد قابل دسترس باشد. در حالیکه تست‌های استفاده‌پذیری اغلب به استفاده افراد با ناتوانی‌هایی اشاره دارد اما تغیی...

10 کتابخانه مفید جاوااسکریپت

در این مطلب از راکت قصد داریم شما را با ۱۰ کتابخانه مفید جاوااسکریپت برای توسعه‌دهندگان آشنا کنیم. به احتمال بسیار زیاد این مورد کم‌حجم‌ترین کتابخانه...