• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چند پرسش درمورد Git
#1
این منبع آموزشی رو برای یادگیری Git خوندم: http://www.vogella.com/articles/Git/article.html

منتها فعلا چون برنامش رو در دسترس ندارم نتونستم تست کنم.
بیشتر روی فرمان checkout ابهام و سوال دارم.
فرمان checkout چکار میکنه دقیقا؟
مثلا من الان در branch1 درحال کار هستم روی سیستم خودم، بعد میام فرمان git checkout master رو اجرا میکنم. حالا آیا فایلهای مربوط به branch1 که در working directory من بودن دلیت میشن و بجاش فایلهای master جایگزین میشن یا اینکه فایلهای قبلی حفظ میشن و اگر commit کنم بعنوان master کامیت میشن؟

بعدش هم این GitHub ظاهرا فقط public repository رو بصورت رایگان میده. اونوقت این پابلیکش یعنی اینکه هرکس دلش خواست میتونه بیاد هرچی خواست به repository من push کنه؟!
  پاسخ
تشکر شده توسط :
#2
در مورد checkout که چند تا کار می شه باهاش انجام داد
- یکی واسه ایجاد شاخه جدید و همون لحظه انتقال به شاخه جدید
- مورد دیگش واسه برگشت دادن تغییرات اعمال شده به فایل ها به حالت قبلی (به آخرین حالتی که تو مخزن commit‌شده بودن)
- یکیش هم واسه جابجایی بین شاخه ها

فرق کنین الان تو یه شاخه ای هستن بغیر از master و یه سری تغییرات رو اعمال کردید
اینجا دو حالت داریم

یکی اینکه تغییرات رو commit کنید و تو همون شاخه ثبتشون کنین که در اینصورت اگه به شاخه دیگه مثل master‌برید ، دیگه اون تغییرات به اینجا هم نمی یاد و دیده نمی شن و فقط واسه همون شاخه خواهد بود و تا وقتی که تغییرات رو تو شاخه master مرج (merge) کنین

یکی هم اینکه تغییرات رو commit نکنین و به شاخه دیگه مثل master برین که تغییرات هم به این دلیل که commit نکردید تو شاخه master هم دیده می شن که اینجا یه نکته ای هست:
اونم اینکه فرض کنین روی شاخه دیگه ای بجر master دارین کار می کنین و می خواین به شاخه دیگه مثل master برین اما نمی خواین تغییرات تو شاخه master هم دیده بشن (حال به هر دلیلی) اینجا می تونید از stash استفاده کنین

مثل تو شاخه ای که تغییرات رو اعمال کردید بزنید git stash و تغییرات یه جایی ذخیره می شن و commit هم نمی شن و البته دیده هم نمی شن و حالا می تونین شاخه رو عوض کنین و مثلا به master برید و یا کارهایی که می خوایید بکنید رو انجام بدید و بعد در نهایت می تونین به شاخه مربوطه و تغییرا رو بر گردونین و دوباره کار روش رو می تونید ادامه بدید تا زمانی که commit کنین و تموم.

که واسه اعمال کردن تغییرات هم به شاخه مربوطه برین و با دستور git stash list می تونید لیستی از تغییراتی که ذخیره کرده بودین رو ببینین و اون توضیحاتشون هم کنارشه که مثلا می نویسه واسه چه شاخه ای بود (که البته خودتون واسش اسم هم می تونستید انتخاب کنین) که بعد از اینکه اسمش رو پیدا کردید (که به عنوان مثال ):
و بعد می زنید
کد:
git stash apply [email protected]{0}
و تغییرات هم اعمال می شن و دیده می شن

در مورد گیت هاب که یادم رفت Smile نه اینطور نیست
پابلیک به این صورت هست که هر کسی می تونه مخزن و فایل ها و اینا رو ببینه ولی اگه خصوصی باشه دیگه کسی نمی تونه ببینه
مثلا ممکنه شما نخواین کسی کدهاتون رو ببینه و فلان.

ولی نمی تونه تغییرات رو تو مخزن شما اعمال کنه
و فقط می تونه تغییراتی که خودش اعمال کرده رو به شما بفرسته (به عنوان pull request) و بعد اگه شما خواستید و مایل بودین می تونین تغییرات رو تو مخزنتون اعمال کنین و می تونین هم قبول نکنین Smile
  پاسخ
تشکر شده توسط : zoghal oia admin
#3
نقل قول:بعدش هم این GitHub ظاهرا فقط public repository رو بصورت رایگان میده. اونوقت این پابلیکش یعنی اینکه هرکس دلش خواست میتونه بیاد هرچی خواست به repository من push کنه؟!
http://githost.com
کاملاً private هستش
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : zoghal hosseintdk775
#4
دوستان اگر کسی در مورد گیت خصوصا گیت هاب توضیح بده ممنون می شم ، جستجو کردم اما چیزی دستگیرم نشد . Huh
  پاسخ
تشکر شده توسط :
#5
اینا ابزارهایی هستن برای ذخیره و مدیریت نسخه های مختلف برنامه موقع توسعه.
بخصوص در کارهای تیمی هم بدرد میخوره.
چند نفر میتونن همزمان روی برنامه کار کنن و نتیجهء کارشون رو در اختیار هم بذارن بدون اینکه با هم قاطی بشه و مال یکی مال اون یکی رو Overwrite کنه و از این حرفا.
اگر یه اشتباهی کردی میتونی اون رو برگردونی به حالت و تاریخ مشخصی که قبلا داشته.
اگر به هر علتی نیاز به نسخه های قدیمی تر داشتی میتونی اونا رو دریافت کنی.
کلا اینطور نرم افزارها شما رو در کارهای پشتیبان گیری و مدیریت نسخه های مختلف برنامه و کار کدنویسان مختلف روی یک برنامه خیلی کمک میکنن.
این توضیحات کلی تاجاییکه بنده میدونستم.
مشکل بیشتری داری؟
با خود فرمانها و کار کردنش مشکل خاصی داری؟
  پاسخ
تشکر شده توسط : admin oia ali786
#6
این اکانت رو الان در github ایجاد کردم: https://github.com/ferchang
  پاسخ
تشکر شده توسط :
#7
خب حالا من میخوام روی working directory خودم که repository هست کار و تست کنم. الان repository ای رو که روی لوکال دارم انتقال بدم داخل www و روش کار کنم؟ چون برای تست و اینها باید در www نرم افزار EasyPHP باشه دیگه.
شما همین کار رو میکنید؟ یا اینکه مثلا یک کپی از فایلها میگیرید میبرید توی www و بعد از تمام شدن یک مرحله توسعه اونا رو کپی میکنید توی repository و add . و commit انجام میدید؟
  پاسخ
تشکر شده توسط :
#8
هر دو
من خودم بدون تست کامیت میزنم Big Grin
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط :
#9
ظاهرا Repository های Git رو میشه همینطور توی ویندوز کپی کرد. ولی از فرمان git clone هم میشه استفاده کرد.
راستی من یک clone کردم در www و یه تغییراتی دادم اما بعد git خطا داد:
کد:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
علتش رو هم پیگیر شدم متوجه شدم فرمان جایگزینی یک عبارت رو با عبارت دیگه در تمام فایلهای پروژه داده بودم به نوتپد++، اما چون دایرکتوری مخصوص git هم در دایرکتوری پروژه هست و توی یکی از فایلهاش اون عبارت بوده نوتپد++ اون فایل git رو هم دستکاری کرده بود.
اگر بشه دایرکتوری git رو به مکانی خارج از working directory انتقال داد برای این منظور خوبه بنظرم! میشه؟
شایدم صرفا پروژه رو بذارم در یک subdirectory در working directory. ولی بیخودی تودرتو میشه.
راه حل دیگه ای برای جلوگیری از این قضیه بنظرتون نمیرسه؟

(۱۳۹۱ خرداد ۰۹, ۱۰:۵۵ ق.ظ)Y.P.Y نوشته: من خودم بدون تست کامیت میزنم Big Grin
متوجه نشدم.
  پاسخ
تشکر شده توسط :
#10
نباید به پوشه .git کاری داشته باشی
باید فقط کد هاتو کپی پیست کنی

با برنامه git gui کار کن تا فوت و فنش دستت بیاد، مثلاً به این صورت:
برنامه رو که باز کردی، اگر repo روی لوکال داری گزینه open existing
بعد همونجا روی کد ها کار می کنی
یا کپیشون می کنی و داخل www میریزی، بعد از اعمال تغییرات دوباره داخل working dir پیست می کنی.
و بعد commit میزنی


اگر repo روی remote داری گزینه clone existing
بعد همونجا روی کد ها کار می کنی.
یا کپیشون می کنی و داخل www میریزی، بعد از اعمال تغییرات دوباره داخل working dir پیست می کنی.
و بعد commit میزنی


اگر هم تازه می خوای روی لوکال بسازی گزینه ceate new


برای push/send کردن repo به remote از آدرسی باید استفاده کنی که @ توش داره.
وبلاگ: Yousha.Blog.ir


 کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بالاتر => نگهداری بهتر

  پاسخ
تشکر شده توسط : vejmad


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان