Во-первых, давайте вернем вас в известное состояние.Сделайте git reflog
и найдите коммит, который находится на определенном этапе, прежде чем вы попытаетесь сделать все это вытягивание и перебазирование.Выполните git checkout -b my-feature <commit-id>
, чтобы создать ветку с именем my-feature
, которая указывает на этот коммит.Убедитесь, что он работает, как и ожидалось, без всех последних изменений с сервера.
Теперь сделайте так, чтобы ваша ветка master
соответствовала тому, что находится на сервере, выполнив git branch -f master origin/master
.
Теперь настало времячасть.Вы должны разрешить конфликты слияния между тем, что вы изменили, и тем, что изменилось на сервере.Это нормальная часть работы в группе, и вы должны методично учиться делать это, а не размышлять об этом. Этот является хорошим ресурсом.Помимо сравнения, это очень хороший инструмент, помогающий разрешить трехсторонние слияния, и вы должны научиться его использовать.
Иногда, если у вас есть файл, который создан инструментом, а не написан вручную, его проще использоватьинструмент для внесения изменений, просто стирая ваши локальные изменения и добавляя их позже.Если вы не совсем понимаете синтаксис файла sln, это может быть для вас.
Чтобы изменить просто файл sln , чтобы он соответствовал тому, что находится на сервере, выполните:
git checkout master -- filename.sln
git commit -am "Reset solution file to match origin"
Затем добавьте свои проекты и зафиксируйте файл снова как обычно.Теперь вы хотите внести эти изменения в основную ветку.Do:
git rebase master
# resolve any merge conflicts, then git rebase --continue after each one
git checkout master
git merge my-feature
# test to make sure everything works
git push