Создание разных веток одной и той же двойной папки - PullRequest
0 голосов
/ 14 мая 2018

Я работаю над проектом, и мои знания по git являются базовыми.Пытаясь объединить ветку с основной веткой, но с другими функциями, я хочу решить эту проблему с помощью своей базовой логики (я ищу легкости), даже если это не лучший способ решить проблему.

Iскопировал одну и ту же папку проекта с разными именами, пытаясь создать ветки с именами компонентов.все функции действуют в разных файлах, а иногда и в одном и том же файле, но я хочу зафиксировать разные сообщения в разных ветках, а затем объединить их одно за другим с главной веткой.

Первая проблема - почему я идув разные папки я получаю одно и то же имя ветки.Могу ли я просто переименовать ветку на основе функций.

Это допустимый рабочий процесс?

1 Ответ

0 голосов
/ 14 мая 2018

В git не принято создавать копии папки для работы с различными функциями, потому что ветвление очень легкое и легко переключать ветви внутри одной папки.

Тем не менее, если проект большой, сложный в настройке или для тестирования каждой функции требуется много внешних настроек, может быть проще работать в отдельных папках.

Для git каждая папка представляет собой отдельный репозиторий, поэтому предположим, что у вас есть папки для функций X, Y и github repo G, тогда это означает, что у вас фактически есть 3 отдельных репозитория: X, Y и G.

Один из способов сделать то, что вы хотите, - это сначала подготовить репозиторий X по своему усмотрению и синхронизировать его с G, используя git pull / push. Затем вы готовите репозиторий Y и синхронизируете его также с G.

В итоге у вас все еще будет 3 отдельных репо, но у каждого будут ветки feature-x, feature-y и master с одинаковыми коммитами.

Итак, если вы находитесь в папке X, чтобы создать ветку «feature-x» из текущего состояния и переключиться на нее, вы будете использовать:

git checkout -b feature-x

Полагаю, вы уже сделали свои коммиты, и git log выглядит хорошо.

Затем вы синхронизируетесь с «G», выполнив git push. Это добавит ветку feature-x и ваши новые коммиты к G.

На этом этапе вы можете перейти к github и создать запрос на извлечение, который можно объединить с мастером через веб-интерфейс.

Если вы не хотите делать это через веб-интерфейс запроса на извлечение, вы просто сначала подготовите свою основную ветвь в папке X к желаемому состоянию, где самое простое:

git checkout master
git merge feature-x

И затем вы синхронизируете основную ветвь X и G, используя git push.

Наконец, повторите тот же процесс для Y и других функций.

Примечание: первое, что нужно сделать в репозитории объектов Y, это получить новое состояние мастер-ветви из репозитория github G, это делается с помощью git pull.

git checkout master
git pull

Убедитесь, что ваш мастер в Y на этом этапе не изменился, потому что в противном случае он объединит состояние G мастера с вершиной состояния Y мастера. git fetch является альтернативой git pull, которая не выполняет слияние.

Если оно было изменено, для резервного копирования вашего состояния без переключения ветви выполните git branch feature-y и восстановите мастер в исходное состояние на git reset --hard origin/master. Тогда это безопасно сделать git pull.

...