10 دستور مفید Git که شما همیشه نیاز دارید

جمعه ۱۳ مهر ۹۷ توسط یوسف رضا مختاری

1.نمایش commit های منتشر نشده (non-pushed)

git log origin/master..HEAD

شما همچنین می توانید تفاوت ها را با دستور diff ببینید

git diff origin/master..HEAD

 

2.تغییر پیغام آخرین commit

git commit --amend

 

3.برگشت به آخرین commit

تغییرات محلی را حفظ می کند:

git reset --soft HEAD~1

 

تغییرات محلی را حذف می کند. (مراقب باش!)

git reset --hard HEAD~1

اگر میخواهید  N تا commit را لغو کنید، از HEAD ~ N استفاده کنید

 

  1. یک پچ از تغییرات ایجاد کنید
git diff > patch1.patch

 

پچ را برای همه commit های غیرفعال(non-pushed) ایجاد کنید

git format-patch origin/master

 

این دستور یک پچ برای هر یک از commit ها ایجاد می کند. خروجی اش :

0001-commit-1.patch
0002-commit-2.patch

 

  1. یک پچ را اعمال کنید
git apply < patch1.patch

 

  1. بازگرداندن تغییرات محلی

بازگرداندن تغییرات شناسایی شده(tracked)

git checkout .

حذف فایلها و پوشه های شناسایی نشده(untracked) :

git clean -fd

 

  1. Merge کردن با rebase

فرض کنید که میخوایم شاخه‌ی dev رو روی master ری‌بیس کنیم

git checkout dev
git rebase master

 

8.تبدیل چند commit به یک commit

 شما چندین commit برای یک ویژیگی واحد دارید . برای تمیز کردن  history می خواهید یک commit  واحد داشته باشید .

دستور زیر 2 تا commit آخر را به یکی پیوند می دهد .

git rebase -i HEAD~2

 

شما یک ویرایشگر ترمینال (Vim) را  با 2 تا  commit خواهید دید .

pick 3c041de commit 1
pick c0203cb commit 2

# Rebase 85cf1c2..c0203cb onto 85cf1c2 (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
...

“ i ” را برای ویرایش تعاملی فشار دهید سپس در " commit " دوم  “ pick ”را به " f " تغییر دهید .

pick 3c041de commit 1
f    c0203cb commit 2

# Rebase 85cf1c2..c0203cb onto 85cf1c2 (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
...

ذخیره و خروج ( esc و بعد از آن wq سپس enter )

 

  1. حذف commit های محلی

فرض کنید که شما 3 تا commit محلی دارید. اما شما نمی خواهید همه آنها را push کنید . شما باید برخی از آنها را حذف کنید.

git rebase -i HEAD~3

شما 3تا commit آخر را با " pick" مشاهده خواهید کرد.

pick 3c041de commit 1
pick 10bfb27 commit 2
pick 69ac547 commit 3

با دوبار ضربه روی “d” خطوطی را که نمیخواهید push  شود را  حذف کنید

من  “commit 2” و “commit 3 ” را حذف کردم .

pick 3c041de commit 1

ذخیره و خروج از ویرایشگر.

 

  1. حذف از commit ها از راه دور

دستورات را در مرحله قبل دنبال کنید . سپس از force push استفاده کنید .

قبل استفاده از force push دوباره فکر کن .

از آنجا که این دستورات commit های شما را از راه دور overwrite می کند.

ممکن است شما  همه چیز را به هم بریزید.

 

git push -f origin dev

شما می توانید force push استفاده کنید  اگر شما می خواهید  commit های خود را از راه دور تغییر  دهید (مثل rebase و غیره)

اگر هنوز commit های خود را push نکردید شما force push  لازم ندارید .

 

بابت خواندن این مقاله از شما تشکر میکنم .

 


کلیدواژه: آموزش git دستورات کاربردی git git

منابع: medium.com

دیدگاه ها:
مسعود ملک پور
۱ ماه قبل
reply
سلام ، مشکل clone گرفتن پروژه ، از gitlab رو چه طور باید برطرف کرد؟ پیغام خطا میده ( البته بعد از تحریم های ایران )
مجتبی حبیبیان
۱ ماه قبل در پاسخ به مسعود ملک پور
reply
سلام راه های زیادی وجود داره، ساده ترینش استفاده از وی پی ان های مرسوم هست.
برای مطالعه ی بیشتر این مقاله رو چک کنید: http://vrgl.ir/X4Tsx
ارسال دیدگاه:
برای ارسال دیگاه باید به سیستم وارد شوید و یا ثبت نام کنید. ثبت نام چند لحظه بیشتر زمان شما را نمیگیرد.
مولف:
یوسف رضا مختاری
عضو تیم تولید محتوای آرکادمی
مشاهده‌ی پروفایل
آمار و مشخصات:
event
چهارشنبه ۱۱ مهر ۹۷
public
arcademy.ir/+a331
favorite
۲ پسند
comment
۲ دیدگاه
group
۱۸۷ بازدیدکننده
visibility
۲۲۵ بازدید
رده های این مقاله: