برگشتن به یک commit

پرسیده شده
فعالیت 1336 روز پیش
دیده شده 3259 بار
5

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

فایل پیوست

sara madani
sara madani

8 بهمن 98

17
حذف شده

عرض سلام و وقت خدمت شما، اول اینکه عذرخواهی میکنم بجای استاد آوند بنده دارم پاسخ میدم . درسته ولی ببینید به نظر بنده بهتر به جای استفاده از عبارت "پاک شدن" ، بگیم "مخفی شدن" چون 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 های شما برمیگرده .

 

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

فایل پیوست

محسن محمدی رهنما

توسط

محسن محمدی رهنما

8 بهمن 98

حذف شده
سلام من تست کردم و جواب داد ولی نکتش اینه که باید ای دی هارو جایی ذخیره کنیم برای خودمون تا بتونیم بهشون برگردیم
sara madani

19 بهمن 98

حذف شده
عرض سلام ، بله دقیقا.
حذف شده
سلام محسن جان خیلی ممنون خیلی کامل توضیح دادی برای من هم سوال بود متشکرم
مجید زادگی

22 بهمن 98

حذف شده
سلام مجید جان، اختیار داری دوست خوبم کاری نکردم
5
حذف شده

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

فایل پیوست

sara madani

توسط

sara madani

8 بهمن 98

حذف شده
برای ویرایش کامیت ها می تونید از این دستور استفاده کنید. ``` git commit --amend ```
Faraz salehi

10 آذر 99

6
حذف شده

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

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

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

فایل پیوست

mahdi mortezaee

توسط

mahdi mortezaee

23 بهمن 98

حذف شده
سلام مهدی جان ، ممنون بابت نکته ای که اشاره کردی جالب بود نمیدونستم . یه مطلب جدید که داشتم توی داکیومنت خوده git میخوندم این بود که git توی log کردن (برای commit ها) میاد از sha-1 برای کد گذاری commit ها استفاد میکنه ببین لهف چقد فوق العادس که میاد دوباره همون sha-1 رو دوباره hash میکنه (برای اینکه با آناتومی commit بیشتر آشنا بشی لینکش رو برات میزارم) به زبان خودمونی بخوام بگم یعنی عمرا شما دوتا commit با id یکسان داشته باشی. https://blog.thoughtram.io/git/2014/11/18/the-anatomy-of-a-git-commit.html
6
حذف شده

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

git log --oneline

 

فایل پیوست

mahdi mortezaee

توسط

mahdi mortezaee

19 اسفند 98

7
حذف شده

برای اینکه بتونید 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

توسط

mahdi mortezaee

19 اسفند 98

3
حذف شده

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

فایل پیوست

علیرضا شاهسواری

توسط

علیرضا شاهسواری

19 اسفند 98

حذف شده
سلام .. سوال خوبی پرسیدید ممنون توجه داشته باشید که وقتی ما در یک branch مانند master یک branch جدید مثل develop میسازیم تمام commit های master به develop داده میشود و در develop میتوانیم به commit های مختلف موجود بریم ولی در ادامه اگر در develop تغییرات بدهیم و commit بکنیم به master اضافه نمیشه که کاملا درست هستش چون ما نمیخواهیم کل commit های موجود رو در master داشته باشیم و صرفا وقتی به حد معینی رسید پروژه در develop اون رو به master مرج و commit کنیم.
mahdi mortezaee

20 اسفند 98

حذف شده
ولی اگه خیلی الزامی باشه رفتن به یک commit در develop زمانی که در master هستید میتونید id اون commit در develop رو برداشته و سپس به master برید و دستور زیر رو اجرا کنید : git reset --hard id ولی توجه داشته باشید زمانی که به این commit برید تمام commit های موجود در master پاک میشه و درعوض commit فعلی develop که به آن وارد شدید و commit های ما قبل آن جایگزین میشه که به همین دلیل این کار توصیه نمیشه اگه دوستان نکته دیگه ای دارند ممنون میشم بیان کنند
mahdi mortezaee

20 اسفند 98

3
حذف شده

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

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

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

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

 

فایل پیوست

Shahin Sherafat

توسط

Shahin Sherafat

16 شهریور 99

4
حذف شده

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

$ git config --list

 

فایل پیوست

Shahin Sherafat

توسط

Shahin Sherafat

16 شهریور 99