git reset --hard
Возвращает все ваши исходные файлы точно из той ветки, в которой вы находитесь. Если вы захотите сделать это осторожно, потому что если у вас есть изменения, которые вы хотите сохранить, они могут быть перезаписаны.
Теперь вы также описали ситуацию, когда "git pull" создал новую надоедливую версию слияния. На данный момент, что вы можете сделать:
git pull
# oops, a merge created, what a mess
git reset HEAD^ # maybe need more ^'s - see below
git reset --hard
git pull
Первая команда git reset «удалит» последний коммит - коммит слияния - без изменения любых ваших файлов, так что они будут продолжать содержать много дерьма. Так что вторая команда избавится от всей этой хрени. Затем вы можете снова «получить тягу», чтобы снова получить последнюю версию.
На самом деле вам может понадобиться сделать более одного «^» для этого ГОЛОВА ^, если ваша ветвь была впереди более чем на один от мастера. Используйте «git status», чтобы узнать, сколько ревизий у вас впереди мастера.
В любом случае, просто делайте эти команды одну за другой, пытаясь понять, что происходит, и используя правильную команду для ситуации. Трудно дать вам конкретный список команд (а приведенный выше конкретный список, вероятно, не совсем то, что вам нужно).