شاخه های از راه دور - اینها پیوندهایی به وضعیت شاخه ها در مخازن از راه دور شما هستند... این شاخه های محلی هستند و نمی توانند منتقل شوند. آنها هر زمان که از طریق شبکه ارتباط برقرار می کنید به طور خودکار حرکت می کنند. شاخه های از راه دور به عنوان نشانک عمل می کنند تا به شما یادآوری کنند آخرین باری که شاخه ها در مخازن از راه دور به آنها متصل شدید.

اگر تغییرات شما شامل ایجاد پرونده های جدید باشد ، یک مرحله اضافی مشکل وجود دارد.

  • برخی تغییرات ایجاد کنید.
  • تغییرات شما هنوز در نیمه راه است.
آنها از شما می خواهند که اینگونه کار کنید. این پست به وضوح حیرت زده شده است و بازدید زیادی دارد.

با کلون ، افزودن ، تعهد و پرداخت می توانید برای مدتی زنده بمانید. اما خیلی زود ، شما نیاز به نصب مجدد ، فشار ، کشیدن ، بیرون انداختن ، ادغام ، وضعیت ، ورود به سیستم و درخواست کشش بدون مغز آزار دهنده دارید. به عنوان یک برنامه نویس ، ارزش این را دارد که برای یادگیری ابزارهای خود وقت بگذارید. درست است ، اما مهم نیست نکته این است که تسلط بر این ابزار دشوار است و باید بهبود یابد. اگر نمی توانید این را درک کنید ، باید لال باشید. نکته قبلی حق با شماست. همه نقص ها ، نادرستی ها ، تحریف ها ، تعمیم ها و تعصبات متعدد شناسایی شده است. به طور کلی ، سطح بحث در واقع بسیار خوب بود ، بنابراین از همه متشکرم. اما زندگی من با Geet خیلی بهتر شده است ، چرا شما مخالف آن هستید؟ ... چندین ناسازگاری در تیم پاداش.

به نظر می رسد مانند (نام مخزن از راه دور) / (شاخه). به عنوان مثال ، اگر می خواهید ببینید آخرین شاخه اصلی در سرور مبدا آخرین باری که به آن متصل شدید به چه صورت است ، شاخه اصلی / اصلی را بررسی کنید. اگر شما و یک شریک در مورد یک مشکل کار کرده اید و آنها شعبه Iss53 را بارگذاری کرده اند ، ممکن است شعبه محلی Iss53 خود را داشته باشید. اما آن شاخه در سرور به تعهد در مبدا / iss53 اشاره خواهد کرد.

نمایش اطلاعات مربوط به یک مخزن از راه دور

برای ریختن یک پرونده در فهرست کار به حالت نصب شده آن. برای ریختن هر پرونده در فهرست کار به حالت نصب شده آن. پارامترهای فرمان ، که عملا مورد نیاز است. اقدام فوق شاخه را فقط از راه دور حذف می کند. سپس این سال مطرح می شود: چگونه شرکت های وابسته خود را تمیز کنم؟

لیست شاخه های دستگاه محلی

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

بارگیری مخزن از راه دور

با استفاده از فهرست cloned ، می توانید مستقیماً بروید و نیازی به پیکربندی سرورهای از راه دور نیست. درخواست وضعیت مخزن. یا باید یک repo شبیه سازی شده یا یک repo خانگی در پیش رو داشته باشید.

همه اینها احتمالاً گیج کننده است ، بنابراین بیایید به یک مثال نگاه کنیم. من یک مخزن از راه دور در GitHub ایجاد کردم https://github.com/n0tb0dy/RemoreBranches

در آنجا من سه تعهد کردم


هنگام شبیه سازی مخزن از راه دور ، Git به طور خودکار آن را نامگذاری می کند اصل و نسب، تمام داده ها را از آنجا می گیرد ، یک نشانگر برای آنچه شاخه به آنجا نشان می دهد ایجاد می کند استاد، و آن را به صورت محلی نامگذاری خواهد کرد مبدا / استاد (اما نمی توانید آن را حرکت دهید). Git همچنین شما را شعبه خودتان می کند استادکه در همان مکان شاخه شروع می شود استاد که در اصل و نسببنابراین شما چیزی برای کار دارید.

این به شما اطلاعاتی در مورد وضعیت فعلی می دهد ، هنوز تغییراتی ایجاد نشده است یا اینکه کدام شاخه در حال حاضر فعال است. برای یک repo که اخیراً بارگیری یا شبیه سازی شده است ، این خروجی باید ظاهر شود. هیچ چیزی در شعبه شعبه متعهد نیست ، دایرکتوری کاری تغییر نمی کند.

این بدان معنی است که تاکنون هیچ تغییری محلی در کد ایجاد نشده است ، یا همه تغییرات قبلاً ذخیره شده اند. در این مرحله ، دانستن اینکه تعهدات چیست مفید است. تعهد به این معنی است: "تغییرات من باید به عنوان یک مرحله رشد در شرح وقایع گنجانده شود." علاوه بر تعهد ، یک پیام کوتاه نمایش داده می شود که در جدول زمانی برای سایر توسعه دهندگان نمایش داده می شود. این به طور خلاصه تغییرات جدیدی را که تعهد به همراه دارد ، مانند "تغییر رنگ عنوان به آبی" توصیف می کند. پایان مربوط به "سطح توسعه" است که می توانید در هر زمان به آن بازگردید.

"مبدا" نام خاصی نیست

این هنگام ایجاد مخزن محلی مشابه نام پیش فرض شاخه اصلی است. درست مثل یک شاخه استاد به صورت پیش فرض در دستور ایجاد شده است شروع کردن، به همین ترتیب نام به طور پیش فرض استفاده می شود اصل و نسب به دستور git کلون... اگر git clone –o booyah را صادر کنید ، booyah / master را به عنوان شاخه پیش فرض از راه دور دریافت خواهید کرد.

ابتدا ، شما یک نمای کلی از پرونده های تغییر یافته دریافت خواهید کرد. همه پرونده ها اکنون به "منطقه صحنه سازی" اضافه می شوند که باید به عنوان مرتکب محاسبه شوند. پرونده های فردی را می توان اضافه کرد. اگر به اشتباه فایلی را در کار خود تغییر داده اید و می خواهید آن را واگرد کنید ، می توانید از این دستور استفاده کنید. خطای اشتباه اضافه شده دوباره قابل حذف است.

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

و بنابراین به تعهدات ما ... در مخزن از راه دور ، آنها به این شکل هستند

فرمان دادن گیت واکشی فقط به روزرسانی هایی را از سرور دریافت می کنید که هنوز آنها را ندارید و به هیچ وجه دایرکتوری کاری شما را تغییر نمی دهد... این دستور فقط داده ها را دریافت می کند و به شما امکان می دهد تصمیم بگیرید که با آنها چه کاری انجام دهید (ترکیب با داده های خود ، ویرایش و غیره)

تاکنون ، ما فقط از شاخه "master" - "master version" استفاده کرده ایم. آنها فرایندهای توسعه موازی را تشکیل می دهند و می توانند از شاخه های موجود ایجاد شوند ، یا می توانند به شاخه دیگری اختصاص داده شوند. در واقع ، تیم نه تنها در یک شاخه ، بلکه در چندین شاخه به طور همزمان توسعه می یابد. هنگامی که توسعه دهنده کار خود را در شاخه نسخه خود به پایان رساند ، شاخه خود را "به عنوان مثال" در شاخه اصلی "ادغام" کرد. Git تغییراتی را از شاخه "ادغام" به شاخه اصلی می پذیرد و بسیار هوشمند است که معمولاً هیچ بحث و جدال متضادی وجود ندارد.

فرمان دادن جیت کشیدن ، در بیشتر موارد، بلافاصله داده های دریافتی را با شما ادغام می کند.

معمولاً بهتر است فقط از دستور git fetch و دستور git merge استفاده کنید تا بتوانید ادغام را برای خود کنترل کنید.

از بین بردن شاخه های از راه دور

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

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

شاخه های موجود را نشان دهید

اگر برای رفع خطا به تنهایی کار می کنید ، این اختیاری است. در این حالت ، شعبه شما به صورت محلی روی رایانه باقی می ماند. یک تعهد در شاخه وصله ایجاد می شود - شاخه اصلی اکنون اصلاح شده است. می توانید بین شاخه های مختلف جابجا شوید. مهم: شاخه ها معمولاً فقط در صورت تغییر در شعبه فعلی یا ایجاد تغییر در هر شاخه ، قابل تغییر هستند. این اتفاق می افتد که شما در حال برنامه ریزی یک تابع جدید هستید و باید خود به خود یک خطای مهم را برطرف کنید.

$ git push origin - حذف سرور


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

هنوز نمی خواهید کار خود را روی ویژگی جدید انجام دهید ، زیرا هنوز در میانه کار هستید. اکنون می توانید به شاخه دیگری بروید یا شاخه جدیدی برای رفع آن ایجاد کنید. پس از اتمام اصلاح ، اصلاح را برطرف کرده و آن را بخاطر بسپارید ، می توانید به شاخه قبلی عملکرد برگردید و تغییرات را قبلاً در آن اعمال کنید. دفتر شعبه عملکرد شما اکنون به همان وضعیت قبلی قبل از رفع اشکال برگشته است و شما می توانید روی کد خود کار کنید.

در طول توسعه ، گردش کار شما چیزی شبیه به این خواهد بود. سریعترین راه برای درک اصل ایجاد یک پروژه نمونه و اجرای سناریوهای مختلف است ، به عنوان مثال ، یک ویژگی جدید باید یکپارچه شود یا خطاهای اساسی باید در حالی که روی یک ماژول دیگر کار می کنید رفع شود. شاخه های خارجی پیوندهایی به وضعیت شاخه های موجود در مخازن خارجی شما هستند. این شاخه های محلی است که نمی توانید تغییر دهید ، هر زمان که یک عملیات شبکه را انجام می دهید به طور خودکار تغییر می کنند.

اگر از احراز هویت رمز عبور استفاده می کنید:

  1. $ git clone https: // نام کاربری: [ایمیل محافظت شده]/opt/git/repository.git

کار با شاخه ها

نمایش تمام شاخه ها:
  1. $ git شاخه
ایجاد یک شاخه جدید:
  1. $ git شاخه
تغییر شعبه جدید:
  1. $ پرداخت گیت
یک شاخه جدید ایجاد کنید و به آن بروید:
  1. $ git پرداخت -b
حذف شعبه محلی:
  1. $ git شاخه -d
حذف شاخه از مخزن از راه دور:
  1. $ git push origin - حذف

کار با تعهدات

چگونه آخرین تعهد را حذف کنم؟

  1. $ تنظیم مجدد git - نرم HEAD ^
گیت چطور فصل 16. دور انداختن تعهدات
گیت چطور فصل 17. حذف تعهدات از یک شعبه
مستندات رسمی Git. مبانی Git - معکوس کردن تغییرات

چگونه آخرین تعهد را تغییر دهم؟

  1. $ git new_file.txt اضافه کنید
  2. $ git commit --amend

چگونه می توانم نظر مربوط به آخرین تعهد را تغییر دهم؟

  1. $ git commit --amend
  2. $ git commit --amend -m "نظر جدید"

چگونه چندین مرتبه را ادغام کنم؟

  1. $ git rebase -i HEAD ~ 3
به جای HEAD ~ 3 ، می توانید از هش مرتکب استفاده کنید. شما باید هش تعهدی را که می خواهید همه چیز را در آن ادغام کنید (مسطح) کنید.
ویرایشگر با لیستی از تعهدات ، با قدیمی ترین مرتکب در بالای صفحه ، باز می شود.
  1. انتخاب 1111111 تعهد 1 نظر
  2. انتخاب 2222222 تعهد 2 نظر
  3. انتخاب 3333333 تعهد 3 نظر
ما باید کدو را جایگزین کدو سبز کنیم تا اینگونه بدست آید:
  1. انتخاب 1111111 تعهد 1 نظر
  2. کدو 2222222 تعهد 2 نظر
  3. squash 3333333 تعهد 3 نظر
بعد ، باید پرونده را ذخیره کرده و از آن خارج شوید. دوباره باز خواهد شد ویرایشگر متن با تمام نظرات مربوط به تعهدات شما باید ویرایش ، ذخیره و خارج شوید. پس از طی این مراحل ، تعهدات ادغام می شوند.

چگونه می توانم تغییراتی را در یک پرونده خاص لغو کنم و آن را به حالتی که پس از آخرین مرتکب شدن در آن بود برگردانم؟

  1. $ git checkout - file.txt

چگونه می توانم تمام تغییرات متعهد نشده (تعهد نشده) را برگردانم؟

  1. $ پرداخت گیت

چگونه می توانم برخی از پرونده ها را برای مرتکب بعدی نگه دارم؟

فرض کنید شما می خواهید در برخی پرونده ها تغییراتی انجام دهید ، و در مرتکب بعدی تغییرات در پرونده های دیگر انجام دهید. سپس می توانید آنها را به طور موقت از مخزن (پرونده های خارج از مرحله) حذف کرده و دوباره اضافه کنید.
  1. $ git تنظیم مجدد HEAD file.txt
این دستور پرونده را از مخزن حذف می کند ، آن در کامیت های قدیمی باقی می ماند. سر به آخرین تعهد در شعبه فعلی اشاره می کند.

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

در این حالت می توانید فشار اجباری ایجاد کنید.
  1. $ git push -f استاد اصلی

ادغام شاخه ها

چگونه می توانم فقط برخی پرونده ها را از شاخه دیگری بردارم؟

  1. $ git checkout branch branch - path / to / file.file

مخازن از راه دور

نمایش اطلاعات مربوط به یک مخزن از راه دور

  1. $ git مبدا نمایش از راه دور
صفحه نمایش چیزی شبیه به این را نشان می دهد:
  1. * منشا از راه دور
  2. واکشی URL: [ایمیل محافظت شده]: /opt/git/test-project.git
  3. فشار دادن URL: [ایمیل محافظت شده]: /opt/git/test-project.git
  4. شاخه HEAD: استاد
  5. شاخه از راه دور:
  6. master new (واکشی بعدی در ریموت ها / مبدا ذخیره می شود)
  7. تنظیم محلی برای "git push" پیکربندی شده است:
  8. استاد هل می دهد تا استاد شود (محلی خارج از تاریخ)

افزودن مخزن از راه دور

  1. $ git از راه دور منبع را اضافه کنید [ایمیل محافظت شده]: /opt/git/test-project.git