PDA

View Full Version : دستورات git



slr560
جمعه 14 شهریور 1393, 19:30 عصر
سلام
یکی از دوستان لطف کردن و منو توی git راهنمایی کردن و تا حدی واسم جا افتاد
تو یه سری از دستوراتش اشکال دارم
من الان سورس پروژم روی لپتاپه و میخوام بفرستمش روی repository
اول از همه init کردم و پوشه .git رو ساختم توی root پروژم
با دستور git remote هم به repository مورد نظر کانکت شدم. ولی نمیدونم با چه دستوری کل پروژه رو بفرسم روی سرور gitlab
کسی هست کمک کنه؟

barnamenevisjavan
جمعه 14 شهریور 1393, 20:05 عصر
سلام
یکی از دوستان لطف کردن و منو توی git راهنمایی کردن و تا حدی واسم جا افتاد
تو یه سری از دستوراتش اشکال دارم
من الان سورس پروژم روی لپتاپه و میخوام بفرستمش روی repository
اول از همه init کردم و پوشه .git رو ساختم توی root پروژم
با دستور git remote هم به repository مورد نظر کانکت شدم. ولی نمیدونم با چه دستوری کل پروژه رو بفرسم روی سرور gitlab
کسی هست کمک کنه؟
یسری خواستم با ترمینالش کار کنم اعصابم خورد شد
ولی الان جدیدا خودشون نسخه دسکتاپ ارائه کردن کارباهاش باید راحت و ساده باشه از اینجا دانلود کن

http://github-windows.s3.amazonaws.com/GitHubSetup.exe
https://assets-cdn.github.com/images/modules/home/gh-windows-app.png

slr560
جمعه 14 شهریور 1393, 20:07 عصر
یسری خواستم با ترمینالش کار کنم اعصابم خورد شد
ولی الان جدیدا خودشون نسخه دسکتاپ ارائه کردن کارباهاش باید راحت و ساده باشه از اینجا دانلود کن

http://github-windows.s3.amazonaws.com/GitHubSetup.exe
https://assets-cdn.github.com/images/modules/home/gh-windows-app.png

از github استفاده نمیکنم
از gitlab و bitbucket استفاده میکنم

Nevercom
جمعه 14 شهریور 1393, 22:02 عصر
اول باید گیت رو فولدر برنامه راه اندازی کنید

git init


بعد با دستور add فایل ها رو به مخزن لوکال اضافه کنید:

git add <file>


بعد باید تغییرات رو commit کنید:

git commit -m 'Initial commit'

تا الان تغییرات در مخزن داخلی ذخیره شدن، چون قصد دارید تو مخزن ریموت ذخیره ش کنید، اول مخزن رو بهش معرفی می کنیم:

git remote add origin https://nevercom@bitbucket.org/nevercom/test.git


حالا می تونیم با دستور push اطلاعات رو به مخزن ریموت بفرستیم:

git push -u origin master

هربار فایل جدیدی به پروژه اضافه میشه باید با دستور add به مخزن اضافه ش کنید (احتمالاً اندروید استودیو خودش پیغام میده که می خواید add بشه یا نه، تو PhpStorm که اینطوره)
با هر تغییری باید commit کنید، توجه کنید که قدرت و انعطاف گیت وابسته به همین کامیت ها هست، هیچ وقت مجموعه ای از تغییرات رو با هم کامیت نکنید، تغییرات کاملاً مرتبط با هم رو کامیت کنید و بقیه ی تغییرات رو جداگانه. برای هر کامیت هم توضیح مناسب انتخاب کنید.
با هر کامیت شما یک مرحله به تکامل کدتون اضافه می کنید که قابل ردگیری هست و میشه undo کرد، پس بهتره تغییرات ریز رو کامیت کنید و بعد تغییرات جدید رو اعمال کنید و باز کامیت کنید.

در نهایت هربار خواستید تغییرات رو بفرستید به مخزن ریموت از دستور push استفاده کنید

slr560
جمعه 14 شهریور 1393, 22:45 عصر
ممنون دوست عزیز
یه سوال دیگه
فرض کنید من یه پروژه ای رو ساختم و گزاشتم روی github
حالا دوستم میخواد بیاد سورس کامل رو سینک کنه و یه سری کد اضافه کنه

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

Nevercom
شنبه 15 شهریور 1393, 01:38 صبح
برای بار اول میتونه با دستور clone کل مخزن رو بگیره

کلاً با دستور pull میشه آخرین تغییرات رو گرفت
راه حل درست اینه اول در سایت پروژه ی اصلی رو fork کنه، در این صورت یک کپی از پروژه ی اصلی در مخزن خودش ذخیره میشه، پس اگر تغییرات باعث معرفی باگی بشه، هنوز در پروژه ی اصلی اعمال نشده.
حالا برای اینکه رو پروژه کار کنه میاد و با دستور clone اون دانلود می کنه و در مخزن لوکال موجود هست.
بعد میاد و با دستور checkout یک branch (یا شعبه) جدید برای اون قابلیت یا تغییر خاص ایجاد می کنه.
بعد شروع می کنه به تغییر کد ها و commit و ....
وقتی کارش تموم شد میاد و با push تغییرات رو اعمال می کنه رو مخزن ریموت خودش (نه مخزن اصلی برنامه)
بعد میاد تو سایت و برای اون branch خاص درخواست Pull Request میده.
اینجا همکارتون از شما که مسئول مخزن اصلی هستید درخواست می کنه که تغییراتش رو اعمال کنید. شما تغییرات رو بررسی می کنید و اگه مشکلی نداشت merge می کنید.

در این حالت مشکلی بوجود نمیاد

اگر هم بخواید رو مخزن اصلی کار کنید همیشه قبل از اعمال تغییرات با دستور pull آخرین تغییرات رو بگیرید (بجای fork کردن) و بقیه ی چیزهایی که توضیح دادم

این آموزش همه چیز رو خوب توضیح میده: https://www.atlassian.com/git/workflows

slr560
شنبه 15 شهریور 1393, 23:51 عصر
من اومدم اول از اکانت خودم یه team ساختم و داخل تیم یه repository خصوصی یا همون private
بعدش اومدم دوست خودمو اوردم توی تیم . حالا مخزن برای اون هم نمایش داده میشه
الان مخزن خالیه و چیزی توش نیس

حالا میام با اندروید استادیو خودم یه پروژه میسازم و میفرستمش روی repository تیمی که ساختم
حالا دوست من روی سیستمش یه پوشه میسازه و کل repository رو دانلود میکنه داخل پوشه و با اندروید استادیو خودش پروژه رو import میکنه

این مراحلی که گفتم صحیح هست؟ میشه اینجوری عمل کرد؟

Nevercom
یک شنبه 16 شهریور 1393, 04:43 صبح
پروژه ها همیشه باید یک Maintainer داشته باشن، یعنی کار باید به این سبک باشه که همه برای تغییرات یا امکانات جدید یه Pull Request بدن و Maintainer (ها) بیان و تاییدش کنن.
اگه دو یا چند نفر با دسترسی Write روی یه پروژه کار کنن همیشه احتمال ایجاد Conflict یا تناقض بین کد ها هست، که بعد باید Merge بشه و کل کد رو ممکنه خراب کنه
من تجربه ش رو داشتم اوایل کار و باعث شد قید Git رو بزنم و برم رو روش ستنی Dropbox.

اگه همکارتون به این صورت کار کنه که واسه هر Commit بیاد و Pull Request بده و شما درنهایت تاییدش کنی، این Conflict ها بوجود نمیاد و البته بنیان Git هم این هست که هر تغییری (بخصوص تغییراتی که یک باگ رو بوجود آوردن) قابل ردگیری باشه و بشه Revert کرد و به حالت اول برگردوند.

این چیزی که گفتید مشکلی نداره، مهم اینه که بعدش به چه شکل عمل کنید.

البته بگم اینها دانسته های شخصی هست و من تو تیممون از Git استفاده نمیکنم به دلیلی که گفتم و بیشتر برامون مشکل ایجاد می کرد (به علت عدم آشنایی بافرآیند در اون زمان)