Вы можете исправить конфликты слиянием несколькими способами, как подробно описано в других.
Я думаю, что реальный ключ в том, чтобы знать, как происходят изменения в локальных и удаленных репозиториях. Ключом к этому является понимание отслеживания ветвей. Я обнаружил, что я думаю о ветви отслеживания как о «недостающей части посередине» между моей локальной, действительной папкой файлов и удаленной, определенной как источник.
У меня лично есть привычка 2 вещей, чтобы избежать этого.
Вместо:
git add .
git commit -m"some msg"
Который имеет два недостатка -
a) Все новые / измененные файлы добавляются, что может включать некоторые нежелательные изменения.
б) Вы не можете сначала просмотреть список файлов.
Так что вместо этого я делаю:
git add file,file2,file3...
git commit # Then type the files in the editor and save-quit.
Таким образом, вы более тщательно продумываете, какие файлы добавляются, и вы также можете просмотреть список и подумать немного больше, используя редактор сообщения. Я считаю, что это также улучшает мои сообщения о фиксации, когда я использую полноэкранный редактор, а не параметр -m
.
[Обновление - со временем я переключился на:
git status # Make sure I know whats going on
git add .
git commit # Then use the editor
]
Также (и более актуально для вашей ситуации) я стараюсь избегать:
git pull
или
git pull origin master.
потому что pull подразумевает объединение, и если у вас есть локальные изменения, которые вы не хотели объединять, вы можете легко получить объединенный код и / или конфликты объединения для кода, который не должен был быть объединен.
Вместо этого я пытаюсь сделать
git checkout master
git fetch
git rebase --hard origin/master # or whatever branch I want.
Вы также можете найти это полезным:
git branch, fork, fetch, merge, rebase и clone, в чем различия?