получить конкретные вещи от мастера во время работы над веткой - PullRequest
0 голосов
/ 24 августа 2018

Я работаю в филиале и изменил структуру проекта.Если люди вносят какие-либо изменения в мастер, как я могу внести эти изменения в мою ветку, не испортив структуру изменений.

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

git-merge - Соедините две или более истории разработки вместе.

Для получения более подробной информации введите в терминал $man git-merge

0 голосов
/ 24 августа 2018

Предположим, у вас есть следующие две ветви, где каждая буква представляет хеш коммита:

      C---------D    feature
     /
A---B---E---F---H    master

Пока вы работаете с веткой feature, рекомендуется синхронизировать ее с master, чтобы уменьшить количество конфликтов слияния, когда вы в конечном итоге создаете запрос на извлечение в master.


Чтобы синхронизировать ветку feature, у вас есть несколько вариантов:

1. Добавление всех коммитов от master до feature:

git checkout feature
git merge master

Пример: если вы находитесь в коммите D в ветви feature и выполняете команды, указанные выше, вы примените коммит E, F и H к ветви функции.

Подробнее об этом здесь: git merge

2. Добавление только определенных коммитов от master до feature

git checkout feature
git cheery-pick <commit-hash>

Пример: Запуск git cherry-pick F только добавит коммит F в вашу ветку feature.

Подробнее об этом можно прочитать здесь: git cherry-pick

3. Добавление только определенных файлов от master до feature

git checkout master <path/to/filename>

Пример: Запуск git checkout master src/index.js добавит файл index.js из commit H в вашу ветку feature.

Если вместо этого вы хотите добавить index.js из коммита F, вы можете использовать следующие команды:

git checkout master~1 src/index.js

или

git checkout <commit-hash> <path/to/filename>

Подробнее о команде: git checkout

4. Добавление только определенных строк файла от master до feature

git checkout master <path/to/filename> -p

Пример: если вы запустите git checkout master src/index.js --patch, вы можете решить, какие фрагменты файла src/index.js из коммита H вы хотите добавить в ветку feature.


В основном я использую опции 1. и 2. для синхронизации своих веток - иногда также 3. Конечно, есть много других способов добиться того же с помощью git, вы также можете посмотреть в этой теме для некоторых альтернатив.

0 голосов
/ 24 августа 2018

Первый шаг - это слияние master в ветку изменений:

git checkout change
git merge master

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...