разница между вилкой и веткой на github

<p>если я раскошелюсь над проектом, который размещен на github. разветвляю ли я все ветви? как узнать, на какой ветке основан мой форк? другими словами, какая ветка будет загружена на мой компьютер?</p>

<p>все ветки на github будут скопированы в форк. (очевидно, что это не относится к веткам, которые никогда не передавались на github.)</p><p>но разветвление - это операция github-to-github; на ваш компьютер ничего не копируется. это не совсем то же самое, что клон git <em> </em>. если вы хотите спросить "что копируется, когда я клонирую проект?", см. руководство для <a href="http://git-scm.com/docs/git-clone"><code>git-clone(1)</code></a> .</p>

<p>думайте об этом так:</p><p><strong>репозиторий [sitory]</strong> соответствует совместной работе команды в одном или нескольких филиалах. все участники имеют свою собственную копию.</p><p>каждый <strong>форк</strong> основного репо соответствует работе участника. форк - это на самом деле конструкция github (не git) для хранения клона репо в вашей учетной записи пользователя. как клон, он будет содержать все ветви основного репо в то время, когда вы сделали форк.</p><p>каждый <strong>ветвь</strong> в форке и/или в главном репо может соответствовать нескольким видам вещей, в зависимости от того, как вы хотите работать. каждая ветка может ссылаться на версию проекта, но также может соответствовать различным каналам разработки, таким как исправления или экспериментальная работа.</p><p><strong>запрос на запрос</strong> (в экосистеме github) соответствует задаче. каждый раз, когда я хочу добавить изолированное законченное задание в основной репозиторий, я создаю запрос на извлечение, соответствующий <strong>commitits</strong>, выполненному в этой задаче. эти коммиты переносятся либо из моего <strong>ветвь</strong>, либо из моего <strong>ответвления</strong> в <strong>основной репо</strong>.</p><p>a <strong>commit</strong> - это набор изменений в коде. это одна из самых интересных вещей в git. вы не передаете файлы, вы передаете журналы изменений.</p>

<p>fork - это клон на стороне github (он клонирует все).<br> когда вы клонируете репо, вы получаете всю историю репо со всеми его ветвями.</p><p>хотя теоретически вы можете <a href="https://stackoverflow.com/questions/1485578/how-do-i-change-a-git-remote-head-to-point-to-something-besides-master">изменить ветку по умолчанию для удаленного репо</a> , клон из репозитория github в основном ищет основную ветку. чтобы изменить ветку "по умолчанию", которую получит клон github, вам нужно переименовать основную ветку.</p>

<p>если вы разветвляете проект, вы делаете копию всего проекта в свою учетную запись git hub. вы ничего не копируете на свой пк</p><p>чтобы сделать копию на вашем компьютере, вы должны клонировать ее и извлечь все, и вы получите все ветви и код этого проекта.</p>

<p>если вы создаете ответвление проекта с веб-сайта github, вы получаете все ответвления из вышестоящего проекта.</p><p>если вы клонируете свой недавно созданный форк на локальный пк, на вашем пк будет установлен пульт <code>origin</code>, указывающий на главную ветвь вашего форка на github.</p>

<p>это можно объяснить очень хорошо. у вас есть центральное хранилище на github. всякий раз, когда вы вносите клон этого на свой персональный компьютер для внесения некоторых изменений, этот локальный клон основного репозитория называется форком.</p><p>ветка это нечто другое и входит в состав форка/репо. на самом деле отрасль - это ваша работа на разной стадии развития. они создаются по мере необходимости для сохранения набора функций, предоставления доступа различным пользователям, демонстрации сайта клиенту и т.д.</p>

<p>я хотел бы поделиться реальным примером <strong>когда мы используем ветви и когда мы используем forks</strong></p><p>у нас есть gitlab в нашем магазине, и иногда нам приходится работать над пакетами из проекта laravel. обычно мы создаем ветку и отправляем изменения в ветку, которую мы тестировали в нашей локальной среде vm dev при работе с реальным проектом laravel.</p><p>допустим, наш проект находится по адресу</p><pre><code>https://github.com/yardpenalty/mainproject.git </code></pre><p><strong>использование филиала:</strong></p><p>допустим, ветвь называется <code>it\_doesnt\_matter</code></p><p>после того, как у нас есть ветвь, как мы хотим для производства, мы делаем окончательный push в эту ветку и <strong>создаем запрос на слияние</strong>, который затем отправляется в uat для тестирования. как только тест пройден через qc, изменения объединены в производство.</p><p><strong>объединение</strong> из <code>it\_doesnt\_matter</code> <strong>ветка</strong> теперь передается в главный проект</p><p>по адресу <code>https://github.com/yardpenalty/mainproject.git</code></p><p>допустим, пакетный проект находится по адресу</p><pre><code>https://github.com/yardpenalty/mypackage.git </code></pre><p>имейте в виду, что основной проект использует этот пакет в производстве, поэтому мы не можем вносить изменения, просто помещая их в этот пакет (среди прочих причин). допустим, веб-разработчик должен отредактировать этот пакет, чтобы внести изменения в производство.</p><p>простая ветвь не будет работать, потому что мы не можем увидеть наши изменения без публикации пакета и т.д.</p><p><strong>использование вилки:</strong> теперь, когда нам нужно немного поработать с нашим пакетом, мы создаем клон производственного пакета с помощью вилки. файлы composer.json могут быть обновлены, чтобы указывать на ветвь, которая теперь находится по адресу <strong>путь пользователя или группы</strong></p><p>итак, мы создадим форк в <code>https://github.com/yardpenalty/mypackage.git</code></p><p>и назовите это <code>https://github.com/yardpenalty/yards/mypackage.git</code></p><p>теперь мы можем обновить наш файл <strong>composer.json</strong>, чтобы он указывал на этот пакет в наших "репозиториях": [массив такой, и мы поехали!</p><pre><code> { "type": "github", "url": "https://github.com/yardpenalty/yard/mypackage.git" } </code></pre><p>]</p>