Что делать после ручного слияния, чтобы завершить git pull?

Я сделал git pull, и он сказал мне, что не может автоматически объединиться, потому что было несколько противоречивых изменений, которые были сделаны одновременно на удаленном и локальном серверах. Я сделал ручное слияние. Что мне нужно сделать дальше, чтобы завершить пулл?

СВЯЗАННЫЕ: git pull не объединяет файлы, если какая-либо из дельт конфликтует (требуется ручное слияние)


person amphibient    schedule 03.12.2013    source источник


Ответы (1)


git add файлы, которые вы изменили, а затем зафиксируйте. Сообщение должно автоматически заполняться деталями конфликта и кратким изложением.

person Ry-♦    schedule 03.12.2013
comment
я думал так же, но затем я сделал git diff на одном из файлов, которые я изменил, и ничего не получил взамен (как будто нет разницы) - person amphibient; 03.12.2013
comment
дело в том, что я не хочу совершать их, пока не узнаю, что могу построить. но для сборки мне нужны все остальные изменения, поступающие с пульта, которые не конфликтуют - person amphibient; 03.12.2013
comment
@amphibient: git pull уже должен был применить эти изменения. И если вы уже подготовили файл, запустите git diff --staged, чтобы узнать, что изменилось. - person Ry-♦; 03.12.2013
comment
это не так. я показываю кучу файлов как измененные, но когда я делаю diff, я ничего не получаю взамен - person amphibient; 03.12.2013
comment
@amphibient: Вы пробовали git diff --staged? Слияние также создает любые измененные файлы, которые не конфликтуют. - person Ry-♦; 03.12.2013
comment
ОК... так что вещи возвращались. но он показывает файлы как измененные, тогда как они изменены на удаленном, а не локальном. и у меня нет этих изменений, объединенных локально, даже если они не конфликтуют. - person amphibient; 03.12.2013
comment
IOW, четыре файла, которые я только что объединил, отображаются как измененные так же, как и файлы, которые были изменены на удаленном компьютере, т.е. они находятся в одной категории, что сбивает с толку. - person amphibient; 03.12.2013
comment
@amphibient: Как я уже говорил ранее, git pull применяет неконфликтующие изменения. Я думаю, что в вашем случае. - person Ry-♦; 03.12.2013
comment
в моем случае этого не произошло. - person amphibient; 03.12.2013
comment
@amphibient: git diff --staged, казалось бы, указывает на обратное, потому что он не знает, в каком состоянии находится пульт. Вы находитесь в той ветке, в которой, по вашему мнению, находитесь? Вы что-нибудь запускали (сбрасывали?) между git pull и git add/git diff? - person Ry-♦; 03.12.2013
comment
@amphibient: Если файлы, которые, кажется, не были извлечены, обнаруживаются как в поэтапных, так и в неустановленных изменениях, когда вы выполняете git status, выполните git stash, git reset --hard HEAD (не забудьте дважды проверить git status и ничего здесь не потерять!) и git stash pop. - person Ry-♦; 03.12.2013
comment
я это сделал. все изменения с пульта по-прежнему отображаются как измененные/удаленные и не объединяются. Файлы, которые я объединил вручную, и изменения с удаленного устройства объединены в одну категорию, что не должно быть так, как должно быть. - person amphibient; 03.12.2013
comment
@amphibient: Хорошо. Не могли бы вы вставить вывод из git status, пожалуйста? - person Ry-♦; 03.12.2013
comment
это много но можно визуализировать что в категории # Changes to be committed есть куча modified/deleted которые так на удалёнке, а не на локалке - person amphibient; 03.12.2013
comment
@amphibient: Хм. Насколько я знаю, git status не проверяет с пульта. Это сбивает с толку. То есть вы уверены, что одни и те же файлы не появляются и в разделах «для фиксации» и в разделе «неустановленные»? - person Ry-♦; 03.12.2013
comment
я знаю это, но я сделал git pull. я имел в виду, что то, что находится в локальном, это то, что находится на удаленном, но по сравнению с тем, что на самом деле находится в рабочем каталоге, оно не было объединено. поэтому новая (удаленная) версия находится в локальном репо, рабочий каталог не был объединен, но git status показывает, что файлы рабочего каталога были изменены - person amphibient; 03.12.2013
comment
я хочу объединить то, что находится на локальном диске, но git показывает, что я изменил файлы, которые были фактически изменены на удаленном компьютере, и теперь находятся в локальном - person amphibient; 03.12.2013
comment
работа с этой штукой похожа на прогулку по минному полю... мне нравится вся концепция местного филиала и все такое, и я уверен, что есть способ безопасно пройти через минное поле, но каковы шансы? скука ошеломляющая, я уверен, что это отличная система контроля версий, но кто-то должен сказать, что в комнате есть слон - person amphibient; 03.12.2013
comment
@amphibient: Этого действительно не должно быть. В репозитории Git у вас есть пульты, ветки, поэтапные изменения и изменения рабочего дерева. git add и git rm выполняют изменение рабочего дерева; git commit перемещает поэтапные изменения в историю ветки. git pull извлекает изменения и объединяет их. Если все изменения могут быть объединены автоматически, это происходит с фиксацией; если все изменения можно быстро перемотать вперед, это происходит; в противном случае автоматически объединенные изменения помещаются в рабочий каталог, а конфликты модифицируются в рабочем каталоге. Когда вы разрешаете конфликт, вы делаете git add и фиксируете. - person Ry-♦; 03.12.2013
comment
… поэтому, если вы абсолютно уверены, что изменения не были применены, попробуйте спрятать, сбросить слияние и снова вытащить. - person Ry-♦; 03.12.2013
comment
@amphibient: Можете ли вы показать скриншот? (Может быть, даже с заменой имен или что-то в этом роде?) - person Ry-♦; 03.12.2013
comment
вот связанная тема, которую я только что опубликовал: need-manual-merge" title="git pull не объединяет файлы, если какая-либо дельта конфликтует, требуется ручное слияние"> stackoverflow.com/questions/20358933/ - person amphibient; 03.12.2013