2015-05-21 3 views
0

У меня есть удаленная ветвь мастера и локальная функция «feature». Я объединился из мастера и сделал несколько изменений в локальной ветке. Однако я не подтолкнул его к успеху. Поэтому, когда я пытаюсь «git pull», он говорит только «Все актуально». С другой стороны, файлы в «master» и в файлах в «функции» различны, и я хочу избавиться от нескольких локальных файлов, которые у нас есть, но мастер не делает этого. Что мне нужно, так это способ снова запустить мастер и пометить каждый файл как конфликт, поэтому я могу выбрать то, что мне нужно, а что нет. Повторение локальных изменений не является вариантом, поскольку я потерял бы весь свой код, который я реализовал. Спасибо за помощь!Redo git merge

+0

«Я хочу, чтобы избавиться от нескольких файлов локально, что у нас есть, но мастер не делает.» => Вы добавляли эти файлы в 'feature'? Удалил ли их «мастер»? До, или после того, как вы слились с 'master'? –

ответ

0

Попробуйте git reset HEAD~1, чтобы git подумал, что это фиксация в истории (или изменение 1, если изменения мастера охватывают несколько перекрывающихся коммитов), а затем git pull ….

0

Вам нужно сделать различие между ветвями (master, feature, вы merge и pull) и remotes (требуется для pull и связанной с сообщением Everything is up-to-date). Не совсем ясно, какова ваша ситуация, где вы пытаетесь сделать pull? А какая ветка?

Насколько я понимаю, у вас есть история, где все в отрасли master уже слита в филиале feature

Если вы работаете git pull в то время как у вас есть филиал feature проверил, git пытается fetch новых фиксируется с remote репо, затем слить их (если есть) до feature. Это предполагает, что feature имеет ветвь удаленного отслеживания, но если команда работает вообще (без аргументов), она, вероятно, имеет ее.

git pull Так говорит, что feature является уточненным, кажется, что вы уже толкнули ветку feature его отдаленное отделение слежения (для удаленных репо). Вы тянете, это говорит вам, что больше ничего не произошло.

С другой стороны, вы можете иметь в виду, что master является актуальным.

Если вы хотите «избавиться от нескольких файлов локально, которые у нас есть» (в feature, я полагаю), то что мешает вам просто удалять их? git rm <file to get ridden of>. Сделайте это, пока на feature, и вы не будете влиять на master. Зафиксируйте, как обычно.

Если у вас есть изменения в feature, которые вы хотите отбросить, и получите файлы, как они есть в главном, вы можете git checkout master -- <file to get>. Это обновит ваш локальный файл до состояния master, но без изменения ветки вы все равно на feature. Создайте новые коммиты с этими обновленными файлами, на feature.

Что вы также можете сделать, это интерактивная перебаза. git rebase записывает изменения в feature и позволяет вам «переиграть» их поверх другого (или того же) фиксации. В дополнение к этому, git rebase --interactive позволяет пропустить фиксации в фазе повтора, и даже отредактируйте, что делает фиксация перед повторным воспроизведением. Например, вы можете изменить фиксацию на этапе повтора, а не добавлять ненужные файлы.

Простым было бы git checkout master -- <file>, если просто удалить ненужные файлы не получится.

0

Благодарим всех вас за ответы! То, что я сделал, это: 1. проверочный мастер 2. физически копировать все папки в другом месте 3. проверенная функция 4. запустите папку, сравнив ее с «вне сравнения» и по одному редактировал каждый файл, иногда принимая изменения в функции, иногда мастер.

Это на самом деле не мерзавец решение, и потребовалось некоторое время, но он работал :)