Git Объединить только один файл из мастера в текущую ветку
Я только начал использовать Git. Я создал ветку-A от мастера. Я создал файл abc.txt в ветви A и успешно слил ветку A в master. Сейчас я работаю над тем же файлом в ветви A и хочу объединить основной файл (который abc.txt) в файл ветви A (abc.txt). Я попробовал "git checkout master abc.txt", но он заменяет файл branch-A на abc.txt мастера.
Я знаю, что "git merge master" сделает эту работу, но если кто-то может показать мне, как объединить один файл ТОЛЬКО в текущую ветку.
заранее спасибо
2 ответа
Во-первых, убедитесь, что ваш рабочий каталог чист.
Тогда, как вы обнаружили...
git checkout master abc.txt
... заменит весь файл, но вы, возможно, не поняли, что теперь вы можете сделать патч из этих различий, если сбросите настройки. Итак, после проверки файла:
git reset --mixed
git add --patch abc.txt
Теперь вы можете выборочно выбрать изменения, которые вы хотите включить, зафиксировать, а затем выполнить жесткий сброс, чтобы прийти к этому окончательному состоянию, отбрасывая нежелательные различия.
git commit -m "merge changes to abc.txt"
git reset --hard
Есть ли причина, по которой вы хотите, чтобы этот единственный файл был включен в branch-A
? Для меня это больше похоже на то, что вы хотите сделать ребаз branch-A
на вершине master
, так что все изменения, которые произошли на master
будет включен в branch-A
,
Вот документация для перебазирования: https://git-scm.com/docs/git-rebase
В основном это займет у вас от:
A---B---C branch-A
/
D---E---F---G master
в
A'--B'--C' branch-A
/
D---E---F---G master
проверяя branch-A
и звонит
git rebase master
Это означает, что все изменения произошли с abc.txt
коммиты E, F и G на мастере будут отражены в ваших коммитах на branch-A
,
Rebase просто проверяет master
и применяет коммиты от branch-A
по одному.