Мені хотілося б знати відмінності між створенням Fork проекту та clone
його виконанням.
Чи можу я надсилати запити на витяг через GitHub, лише якщо я відправив проект?
Мені хотілося б знати відмінності між створенням Fork проекту та clone
його виконанням.
Чи можу я надсилати запити на витяг через GitHub, лише якщо я відправив проект?
Відповіді:
В основному, так. A fork
- це лише прохання GitHub клонувати проект і реєструвати його під вашим іменем користувача ; GitHub також відслідковує взаємозв'язок між двома сховищами, тому ви можете візуалізувати коміти та переходи між двома проектами (та іншими вилами).
Ви все ще можете вимагати, щоб люди витягували з вашого клонованого сховища, навіть якщо ви не користуєтесь цим, fork
але вам доведеться мати справу з тим, щоб зробити його загальнодоступним. Або надішліть розробникам патчі (див. git format-patch
), Що вони можуть застосувати до своїх дерев.
git pull
. Вилка приймає кілька команд. І не дивно, що майже кожна вилка, яку я дивлюсь, застаріла. Вилки схожі на проблему сховища Maven на стероїдах. Замість однієї застарілої репо (Maven) їх є тисячі (Git).
git pull
тому існують певні відносини. Якщо ви клонували всю копію, то її сиділи на вашій власній локальній машині і відключили від оригінального репо.
Коли ви говорите, що ви Forking сховище, ви в основному створюєте копію сховища під вашим ідентифікатором GitHub. Тут слід зазначити, що будь-які зміни, внесені до оригінального сховища, будуть відображені у ваших роздрібних сховищах (потрібно отримати та перезавантажити). Однак якщо ви внесете якісь зміни у своє роздрібнене сховище, вам доведеться явно створити запит на витяг до оригінального сховища. Якщо ваш запит тягнути схвалений адміністратором оригінального сховища , то ваші зміни будуть фіксуватися / злилися з існуючим оригінальним кодом базою. До цього ваші зміни відображатимуться лише в копії, яку ви отримали .
Коротко:
Модель Fork & Pull дозволяє будь-якому роздрібнити наявне сховище та натиснути зміни на свою особисту виделку, не вимагаючи доступу до джерельного сховища. Потім зміни повинні бути витягнуті у сховище джерела технічним обслуговувачем проекту.
Зауважте, що після розгортання ви можете клонувати локальне сховище (те, що є вашим іменем) локально на вашій машині. Внесіть зміни до нього та відправте його у своє роздрібне сховище. Однак, щоб відобразити зміни в оригінальному сховищі, ваш запит на виклик повинен бути затверджений.
Кілька інших цікавих дискусій -
Ви можете взяти на себе зобов’язання в режимі онлайн-репо (або взяти на себе місцеве репо, а потім натиснути на онлайн-репо), а потім надіслати запит на тягу.
Керівник проекту може прийняти його, щоб отримати зміни в його основній інтернет-версії.
Клон - це те, де ви маєте належне дублювання та розділення між двома (можливо різними) версіями сховища. Коли в одну редакцію вноситься поправка, новий вміст повинен бути активно скопійований на інший репо, використовуючи команду push. І зміни в інших репо знайшли.
Коли ви розгортаєте репо, на сервері не потрібно дублювати вміст, оскільки обидві репозитори будуть використовувати той самий вміст [фіксованого об’єкта] з того самого сервера. «Трюк» полягає в управлінні різними точками зору користувача, щоб кожен користувач вважав, що має повну особисту копію репо. Натискання та виклики між виделками - це просто оновлення покажчиків користувача.
На нижчому рівні git робить те ж саме всередині. Якщо у вас є три різних файли, кожен з яких містить Hello World
, то git просто "розкручує" свою єдину копію блоку Hello World і пропонує її в кожному з трьох місць, якщо потрібно.
Можливість розщедритися на сервері означає, що велика кількість зберігання Github в середньому не така велика, оскільки кожне тіло ділиться одним єдиним базовим репо.
У двох словах, Форкінг - це, мабуть, те саме, що "клонування під вашим ідентифікатором / профілем GitHub". Вилка в будь-який час краща, ніж клон, за кількома винятками, очевидно. Роздрібний сховище завжди контролюється / порівнюється з оригінальним сховищем на відміну від клонованого сховища. Це дозволяє відстежувати зміни, ініціювати запити на витяг, а також вручну синхронізувати зміни, зроблені в оригінальному сховищі, з роздвоєним.
Хоча відповідь @ AniketThakur дуже хороша. На таке питання ще ніхто не відповів.
Чи можу я надсилати запити на витяг через GitHub, лише якщо я відправив проект?
Ні. Якщо ви є учасником сховища, ви можете: зробити локальний клон. Зробіть місцеву гілку. Додати комісії до цієї гілки. Натисніть локальну гілку назад до github (створюючи віддалену гілку в процесі). Складіть запит на витягнення з проханням об'єднати цю гілку у головну гілку (або будь-яку гілку, яка вам подобається)
Якщо ви зробили те, на що натякнув запитуючий (забув розщедритися і просто локально клонував репо, внесли зміни і тепер потрібно надіслати запит на витягнення), ви можете повернутися до шляху:
Ще одна дивна тонка різниця в GitHub полягає в тому, що зміни в виделках не враховуються в журналі активності, поки ваші зміни не будуть виведені в оригінальний репо. Більше того, щоб змінити вилку на належний клон, мабуть, вам потрібно зв’язатися із службою підтримки Github.
З Чому мої внески не відображаються :
Коміт був зроблений виделкою
Комісії, зроблені виделкою, не враховуються до ваших внесків. Щоб змусити їх рахувати, потрібно виконати одне з наступних дій:
Відкрийте запит на потягнення, щоб ваші зміни були об'єднані в батьківський сховище. Щоб вилучити вилку і перетворити її в окремий сховище на GitHub, зверніться до служби підтримки GitHub . Якщо fork має власні форки, повідомте про підтримку, чи слід вилки переміщуватись із вашим сховищем у нову мережу чи залишатись у поточній мережі. Для отримання додаткової інформації див. " Про виделки ".