Git игнорирует изменения в ветке при слиянии с мастером - PullRequest
0 голосов
/ 17 марта 2020

Допустим, у меня есть ветка "staging", и я создал несколько файлов и зафиксировал их. Я слил «промежуточную» ветку с мастером случайно.

Поскольку объединение было слишком рано (мне все еще приходилось работать над «промежуточной» веткой), я попытался отменить коммит слияния (используя git revert; Я не знаю точную команду, потому что я использовал Git пользовательский интерфейс PyCharm). Теперь эти изменения возвращаются в ветку «master», и все хорошо.

Закончив работу над веткой «staging», я попытался объединить ее с мастером, используя следующие команды:

git checkout master
git pull
git merge staging

И это ответ git:

Auto-merging app/static/css/style.bundle.rtl.css
CONFLICT (content): Merge conflict in app/static/css/style.bundle.rtl.css
Removing app/static/js/main.js
Removing app/static/css/util.css
..
(All of my new files were listed here as removed)
..
Removing app/static/css/main.css
Automatic merge failed; fix conflicts and then commit the result.

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

Я прервал эту операцию на git merge --abort, и теперь все мои файлы вернулись. Но я застрял и не могу слить эту ветку в мастер. Что мне делать?

Я пытался:

  • Объединение с использованием git merge staging -X theirs, но при этом игнорировались все изменения, которые были внесены в мастер другими разработчиками
  • Объединение с другой стороны: git checkout staging && git merge master -s ours, та же проблема, что и выше

1 Ответ

2 голосов
/ 17 марта 2020

Когда вы возвращаетесь, вы говорите Git, что вам не нужны эти изменения (никогда (снова)). Это также означает, что слияние ветви с возвратом удалит эти изменения или не объединит их снова.

Другими словами: при объединении объединяются только «новые» изменения, а не старые (т.е. изменения перед ветвью) началось).

Если вы решите, что вам действительно нужны отмененные изменения, вы должны отменить отмену, например

git checkout branch
git revert hash-of-revert-commit
git checkout master
git merge branch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...