💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۸ sara madani
برگشتن به یک commit
محسن محمدی رهنما حل شده توسط محسن محمدی رهنما

سلام خسته نباشید
استاد وقتی به یک commit بر می‌گردیم 
خوده اون کامیت میمونه و هرچی قبل از اون بوده پاک میشه 
درست متوجه شدم؟

درواقع هر چی بعدش بوده پاک میشه
قبلش درست نیست
کاش قابلیت ادیت کردن پیام هایی که خودمون میفرستیم رو اضافه میکردید.

sara madani ۰۸ بهمن ۱۳۹۸، ۱۴:۲۱

عرض سلام و وقت خدمت شما، اول اینکه عذرخواهی میکنم بجای استاد آوند بنده دارم پاسخ میدم . درسته ولی ببینید به نظر بنده بهتر به جای استفاده از عبارت "پاک شدن" ، بگیم "مخفی شدن" چون commit‌های شما حذف نمیشن هرچند با اینکه شما مثلا با استفاده از دستور git reset --hard به commit  مورد نظر سوئیچ میکنید و ممکن هم هست برخی فایل هاتون رو ببینید(منظورم اونایی که track نشدن) از دیدتون ناپدید میشن ولی حذف نمیشن کافیه دوباره با استفاده از همون دستور git reset --hard یا git reset و زدن آیدی commit قبلی ، برمیگردید به commit‌های پیشین . بزارید با یک مثال شفاف‌تر کنم عرائضم رو. ببینید به عنوان مثال شما چهار تا commit دارید و بنا به تصمیمی که گرفتید میخواید به commit دوم سوئیچ کنید، پس با استفاده از دستور git reset --hard یا git reset و زدن آیدی commit دوم به همون commit برید و اگه log هم بگیرید میبینید که  commit سوم و چهارم رو نمایشم نمیده ، بازهم عرض میکنم commitی حذف نشده چرا این حرف رو میزنم ؟ فقط کافیه با استفاده از همون دستور git reset --hard یا git reset و زدن آیدی commit چهارم و گرفتن log ببینید که دوباره همه commit‌های شما برمیگرده .

 

امیدوارم تونسته باشم کمکی کرده باشم

بهترین پاسخ
محسن محمدی رهنما ۰۸ بهمن ۱۳۹۸، ۱۶:۰۲

ممنون از محسن جان توضیحشون کامل و عالی بود

یک نکته هم بنده اضافه کنم اونم اینکه همونطور که دوستمون گفت log‌ها پاک نمیشند و  در دایرکتوری زیر باقی میمونند :   git\objects.

برای هر log یک پوشه ساخته میشه که اسم پوشه 2 حرف اول ای دی commit هستش و اسم فایل باقی ای دی برای مثال log با ای دی 7e19a38277eacd1c تو مسیر  git\objects\7e.  موجوده با اسم 19a38277eacd1c

mahdi mortezaee ۲۳ بهمن ۱۳۹۸، ۱۴:۵۴

نکته خفن ترش اینجاست که برای reset commit کافیه 7 کاراکتر اول id رو وارد کنید نه نام کامل id رو چون 7 کاراکتر‌های اول commit id ها unique هستند و تکراری نیستند ... از دستور زیر برای مشاهده log‌ها به صورت تک خطی و با همون 7 کاراکتر اول استفاده میشه :

git log --oneline

 

mahdi mortezaee ۱۹ اسفند ۱۳۹۸، ۱۱:۱۸

برای اینکه بتونید commit هایی که قابل مشاهده نیست رو ببینید میتونید از دستور زیر استفاده کنید :

 git log --all

  برای نمایش مرتب تره تمام commit‌ها میتونید از دستور زیر استفاده کنید :

git log --all --oneline --graph --decorate

براینکه هر دفعه لازم نباشه دستور  بالا رو تکرار کنید میتونید از روش زیر یک short code ساخته و از اون هر بار استفاده کنید:

git config --global alias.glog 'log --all --oneline --graph --decorate'
برای استفاده کافیه این دستور رو از این بعد استفاده کنید
git glog

 

mahdi mortezaee ۱۹ اسفند ۱۳۹۸، ۱۱:۲۸

سلام و عرض  ادب خدمت استاد گرامی و دوستان عزیز
سوالم این بود که اگر برنچ develop یا هر برنچ دیگه ای ای تغیراتی ایجاد بکنن master چطور میتونه اونا رو برگردونه؟
چون بنده با برنچ develop تغیراتی رو اعمال کردم اما master نتونست برگردونه و فقط خود develop این اجازه رو داشت

علیرضا شاهسواری ۱۹ اسفند ۱۳۹۸، ۱۸:۲۵

سلام و خسته نباشید

میخواستم یه نکته به فرمایش دوستان اضافه کنم 

برای حذف short code میتوان از دستور زیر استفاده کرد:

$ git config --global --unset alias.YourAlias

 

Shahin ۱۶ شهریور ۱۳۹۹، ۱۷:۰۴

با دستور زیر هم میتوانید همه تنظیمات و هم alias‌ها رو برسی کنید :

$ git config --list

 

Shahin ۱۶ شهریور ۱۳۹۹، ۱۷:۰۸