#git #github #tfs #azure-devops
#git #github #tfs #azure-devops
Вопрос:
Я должен признать, что я никогда не участвовал в проекте с открытым исходным кодом, потому что я не понимаю рабочий процесс. Я много раз просматривал документацию по git, но находил ее слишком сложной.
Я отправил запросы на извлечение в частные репозитории для своего клиента, используя интерфейс, такой как Team Foundation Server (TFS) или Visual Studio Team Services (была Visual Studio Online) для репозиториев git. Я также могу легко работать в одиночку с репозиториями git, используя командную строку git, потому что этот рабочий процесс прост. Но я хотел бы изучить рабочий процесс git, используя его командную строку для внесения вклада в проекты с открытым исходным кодом.
Я прочитал следующие статьи из документации github. Я думаю, что я вроде знаю рабочий процесс, но я не уверен, и я боюсь попробовать его в чужом проекте.
- Разветвляйте репозиторий
- Синхронизация вилки
- О запросах на извлечение
- О моделях совместной разработки
- Создание запроса на извлечение из fork
- Создание запроса на извлечение
Что мне действительно нужно, так это чтобы кто-то упростил шаги в нескольких простых для понимания пунктах.
Из моих исследований до сих пор, вот что я понимаю.
Предположим, мы хотим внести свой вклад в воображаемый проект с именем Boo Boo, владельца которого зовут Baabaa. Предположим, что у меня, человека, который хочет внести свой вклад в Boo Boo, есть учетная запись github на https://www.github.com/Water-Cooler-v2 /
Ниже приведены шаги, до которых я знаю рабочий процесс. После этих шагов я не совсем понимаю, что делать.
-
Сначала я разветвляю Boo Boo из https://www.github.com/Baabaa/Boo-Boo в мой собственный аккаунт на github. Теперь у меня есть свой собственный форк Boo Boo на https://www.github.com/Water-Cooler-v2/Boo-Boo .
-
Затем я клонирую свой собственный Boo Boo в папку на моем компьютере следующим образом:
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/
$ git clone https://www.github.com/Water-Cooler-v2/Boo-Boo.gitЭто связывает мою локальную копию репозитория в папке MyFolder/ Boo-Boo с
remote
именемorigin
, которое указывает на мой собственный форк, т. Е. На https://www.github.com/Water-Cooler-v2/Boo-Boo.git -
Затем я также связываю свой локальный репозиторий в Myfolder / Boo-Boo с удаленным репозиторием Baabaa. Я делаю это, копируя URL репозитория Baabaa и вводя:
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo
$ git remote add upstream https://www.github.com/Baabaa/Boo-Boo.git -
Затем я проверяю, что новый удаленный с именем
upstream
был связан с:MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo
$ git remote --v -
Затем я извлекаю все ветки из удаленного
upstream
хранилища в свой локальный репозиторий на своем компьютере, набрав:MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo
$ git fetch upstream/master -
Теперь я проверяю свою локальную
master
ветку, которая в любом случае будет проверена по умолчанию, но я все равно проверю ее, чтобы быть уверенным:MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo
$ git checkout master -
Затем я внесу некоторые изменения в файлы в моем локальном репозитории. В этом случае я отредактирую существующий файл (не показан ниже, потому что в нем не используются команды git) и добавлю новый файл с именем MyNewFile.txt .
MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo
$ touch MyNewFile.txt -
Теперь я объединю
upstream/master
ветку в свою собственнуюmaster
ветку.MrWaterCooler@WatersComputer MINGW64 /c/WaterCooler/MyFolder/Boo-Boo
$ git merge upstream/master
И затем, теперь это шаг, о котором я не совсем понимаю. Должен ли я нажимать? Куда? Мой собственный форк (удаленный origin master
) или Boo-Boo от Baabaa (удаленный upstream master
)?
Или мне создать запрос на извлечение?
Не могли бы вы, пожалуйста, проверить рабочий процесс для первых 8 шагов, перечисленных выше, а затем завершить его?
Ответ №1:
Ваш рабочий процесс правильный.
-
Всегда создавайте свою собственную ветку на своем форке и нажимайте на
origin
нее . Создание ветки помогает сопровождающему при просмотре вашей ветки. -
После того, как ваши изменения будут внесены, перейдите к исходному репозиторию, и в верхней части страницы должна быть кнопка с предложением создать запрос на извлечение.
Как правило, самая сложная часть вклада в проекты с открытым исходным кодом — это найти, с чего начать. Чтобы помочь с этой проблемой, есть два сайта, которые помогают находить проекты с хорошими проблемами перехода.
Комментарии:
1. Большое спасибо. Очень полезно.
2. Обратите внимание, что после нескольких PR вам, скорее всего, будут предоставлены права на запись в этот репозиторий. Всем, кто проявляет интерес к проектам, которые я поддерживаю, я предоставляю им доступ.
3. Если это не слишком беспокоит, не могли бы вы, пожалуйста, сделать небольшой тестовый репозиторий, чтобы я мог попробовать создать для него PR, а затем вы можете вытащить? Таким образом, я смогу увидеть это в действии? 🙂
4. Нет проблем. Мне нравится поощрять людей вносить свой вклад. В прошлом году я запустил hack-a-thon для этого.
5. @WaterCoolerv2 сопровождающие просматривают PR и добавляют любые комментарии. у хорошего сопровождающего будет автоматическая сборка, чтобы вы знали, если не удастся скомпилировать. после того, как он будет доволен, сопровождающий покажет большой палец вверх или : 1: на PR и слияние.
Ответ №2:
Вы просто разветвляете репозиторий, клонируете его на свой локальный компьютер, при необходимости создаете ветку и вносите свои изменения. На самом деле не имеет значения, как вы работаете локально или в своем собственном репозитории. Вам не обязательно использовать GitFlow. Вы можете выполнять разработку на основе магистрали или все, что вам подходит. Когда вы закончите, вы помещаете его в свой собственный репозиторий. Затем перейдите на GitHub и откройте PR для исходного репозитория. Это все, что нужно.
Что касается добавления оригинала в качестве удаленного: основная причина добавления исходного репозитория в качестве удаленного — это когда вы собираетесь обновить свой fork с изменениями из исходного репозитория (слияние, перебазирование, выбор вишни и т. Д.). Если вы просто собираетесь внести одноразовый вклад в оригинал, например, исправить какую-то ошибку, обычно нет необходимости иметь удаленный доступ. Имеет смысл добавить его для долгосрочных вкладов.
Комментарии:
1. Спасибо. Думаю, я понимаю, о чем вы говорите. Вы говорите: создайте тематическую ветку для выполнения своей работы, потому что это лучше, чем просто делать это в локальном главном. Это нормально. И затем последние 2 шага, которые вы добавили: (1) Отправьте свой локальный
master
файл на свой разветвленный пультorigin master
. Затем перейдите в репозиторий BooBoo от BaaBaa и создайте новый запрос на извлечение, чтобы они извлекли его из вашего форка. Верно ли мое резюме?2. @WaterCoolerv2 почти. Вам не нужно переходить к исходному репозиторию, чтобы создать PR. Перейдите в свой собственный репозиторий, нажмите на
Pull Requests
, затемNew Pull Request
. В раскрывающихся списках в диалоговом окне будет доступен исходный репозиторий. Таким образом, вы можете создать PR по сравнению с оригиналом оттуда.3. Замечательно. Большое вам спасибо. Я пробую это и отмечу ваш ответ как правильный вскоре после того, как сделаю это один раз.
4. Просто уточняю кое-что. Тогда мне тоже не нужно добавлять
upstream
удаленный, верно? Я могу просто внести изменения в свой собственный форк и создать запрос на извлечение?5. О, подождите! Но мне может (и, вероятно, понадобится) подключиться к
upstream
удаленному, чтобыfetch
merge
включить их работу в мое собственное репозиторий, чтобы у меня была последняя версия их работы, и чтобы я мог объединить любые конфликты, которые могла создать моя работа. Спасибо.