You have divergent branches and need to specify how to reconcile them
You have divergent branches and need to specify how to reconcile them
Найдите конфликтующие файлы перед слиянием?
Если мы git pull и увидим:
Чтобы быть предельно ясным, есть изменения на удаленном компьютере, есть изменения на моем локальном, и я хочу увидеть, в чем заключаются конфликты, прежде чем объединять их.
2 ответа
Я не думаю, что это полный ответ, но, основываясь на совете @RomainValeri и @torek, я попытался сделать следующее:
Во-первых, получите удаленные изменения, не пытаясь объединить их, как это делает pull:
Теперь у вас есть изменения на пульте, посмотрите на них вот так:
Затем, если и когда вы счастливы, вы можете объединиться следующим образом:
(обратите внимание, что вам все равно придется иметь дело с любыми конфликтами слияния, но это уже другая история. )
Ответ stevec объясняет, как предварительно просмотреть слияние до того, как оно произойдет, что является хорошим вариантом.
Другой вариант — просто выполнить слияние и отменить его, если вам не нравятся конфликты.
Для этого запустите git pull как обычно. Если должен возникнуть конфликт и вам не хочется его решать прямо сейчас, вы можете просто запустить
И вы вернетесь к старому состоянию вашего рабочего каталога. Обратите внимание, что это будет работать правильно только в том случае, если у вас нет незафиксированных изменений при извлечении, но в любом случае извлечение в нечистый рабочий каталог не является хорошей идеей, поэтому просто зафиксируйте (или спрячьте) перед извлечением.
Как бороться с этим предупреждением git? «Не рекомендуется тянуть без указания того, как согласовывать расходящиеся ветви»
После чего git pull origin master я получаю следующее сообщение:
Тогда тяга прошла успешно. Но все же у меня есть сомнения по поводу этого сообщения.
Что лучше всего делать в этом случае?
In its default mode, git pull is shorthand for git fetch followed by git merge FETCH_HEAD.
Чтобы этого не произошло, нужно
(или нет? читайте дальше, чтобы узнать, какой из них соответствует вашим требованиям)
Это предупреждение было добавлено в Git 2.27.
Вот как выглядит полное предупреждение:
Pulling without specifying how to reconcile divergent branches is discouraged. You can squelch this message by running one of the following commands sometime before your next pull:
git config pull.rebase false # merge (the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only
Предупреждение представляет собой три команды в качестве параметров, все они подавляют предупреждение. Но они служат разным целям:
Это сохраняет поведение по умолчанию и подавляет предупреждение.
Это выполняет извлечение только в том случае, если локальная ветвь может быть перенаправлена. В противном случае он просто прерывается с сообщением об ошибке (и не создает никаких коммитов).
Обновлять:
Примечание: вы можете следить за ответом VonC здесь, чтобы получать обновления об изменениях, внесенных в эту функцию в будущих обновлениях.
Невозможно объединить изменения с двух компьютеров
Мое решение хранится на GitHub, и я использую встроенные функции Visual Studio для проверки ввода и вывода кода. В настоящее время я единственный, кто работает над своим проектом. Но я начал переключаться между разными компьютерами.
Каждый раз, когда я попадаю туда, где на обоих компьютерах есть ожидающие изменения, я не могу продолжить.
Я пытаюсь отправить свои изменения на один компьютер, и это дает мне ошибку:
Unable to push the remote repository because your local branch is behind the remote branch. Update your branch by pulling before pushing.
[Pull then Push] [Pull] [Cancel]
The pull operation failed. See the Output window for details.
И окно вывода показывает следующее.
Обе системы показывают, что текущая ветвь — мастер. Я ожидал, что изменения будут объединены, поэтому я не уверен, почему это проблема.
Есть ли способ заставить Visual Studio объединить изменения и позволить мне решать любые конфликты?
Примечание. Я пытаюсь прочитать об этом, но я не использую для этого командную строку. Я бы предпочел просто использовать IDE. И кажется, что это должно поддерживать то, что я пытаюсь сделать. То, что я прочитал, похоже, указывает на то, что мне нужно установить параметр Перебазировать локальную ветку при вытягивании, но я не уверен, что мне следует установить и почему.
Если вы используете Visual Studio 2019 или более позднюю версию, вы сможете следовать эти инструкции, чтобы установить стратегию git pull для своего проекта.
Установка конфигурации в Visual Studio (или в командной строке, как предлагает git) устранит ошибку. Что касается того, какой вариант вы должны выбрать для конфигурации, это действительно зависит от вас. Но я дам краткий обзор каждого варианта:
Спасибо. Я заставил его работать, установив его true. Похоже, Microsoft выбрала бы один из тех, который работает по умолчанию. В любом случае, я рассмотрю это более подробно, а также ссылки, которые вы предоставили.
Unable to merge changes from two computers
My solution is stored on GitHub and I’m using the built-in features of Visual Studio to check code in and out. Currently, I’m the only one working on my project. But I’ve started switching between different computers.
Every time I get to where both computers have pending changes, I am unable to continue.
I’m trying to push my changes on one computer and it gives me an error:
Unable to push the remote repository because your local branch is behind the remote branch. Update your branch by pulling before pushing.
[Pull then Push] [Pull] [Cancel]
The pull operation failed. See the Output window for details.
And the Output window shows the following.
Both systems show the current branch is master. I was expecting the changes to be merged so I’m not sure why this is a problem.
Is there any way to get Visual Studio to merge the changes and allow me to deal with any conflicts?
Note: I’m trying to read up on this but I am not using a command line for this. I would far prefer to just use the IDE. And it seems like it should support what I’m trying to do. What I’ve read seems to indicate I need to set the Rebase local branch when pulling setting, but I’m not sure what I should set it to or why.
1 Answer 1
If you’re on Visual Studio 2019 or above, you should be able to follow these instructions to set the git pull strategy for your project.
This answer gives a thorough explanation of the warning that you’re seeing from Git. Basically, git wants you to set a configuration to tell it how to handle situations where you’re attempting to update a remote branch that has diverged from your local branch. Setting it to False will give you the behavior that you’re probably used to, but I prefer True personally.
Setting the configuration in Visual Studio (or at the command line, as suggested by git), will resolve the error. As for which option you should choose for the configuration, that’s really up to you. But I’ll give a brief overview of each option:
Как бороться с этим предупреждением git? «Не рекомендуется тянуть без указания того, как согласовывать расходящиеся ветви»
После чего git pull origin master я получаю следующее сообщение:
Тогда тяга прошла успешно. Но все же у меня есть сомнения по поводу этого сообщения.
Что лучше всего делать в этом случае?
In its default mode, git pull is shorthand for git fetch followed by git merge FETCH_HEAD.
Чтобы этого не произошло, нужно
(или нет? читайте дальше, чтобы узнать, какой из них соответствует вашим требованиям)
Это предупреждение было добавлено в Git 2.27.
Вот как выглядит полное предупреждение:
Pulling without specifying how to reconcile divergent branches is discouraged. You can squelch this message by running one of the following commands sometime before your next pull:
git config pull.rebase false # merge (the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only
Предупреждение представляет собой три команды в качестве параметров, все они подавляют предупреждение. Но они служат разным целям:
Это сохраняет поведение по умолчанию и подавляет предупреждение.
Это выполняет извлечение только в том случае, если локальная ветвь может быть перенаправлена. В противном случае он просто прерывается с сообщением об ошибке (и не создает никаких коммитов).
Обновлять:
Источники информации:
- http://www.stackfinder.ru/questions/62653114/how-to-deal-with-this-git-warning-pulling-without-specifying-how-to-reconcile
- http://reddeveloper.ru/questions/nevozmozhno-ob-yedinit-izmeneniya-s-dvukh-komp-yuterov-Vmr5j
- http://stackoverflow.com/questions/72033673/unable-to-merge-changes-from-two-computers
- http://www.stackfinder.ru/questions/68593307/why-git-is-throwing-me-a-warning-when-trying-to-pull?noredirect=1