Git отказаться от всех изменений и вытащить из восходящего потока

Как мне получить репозиторий вверх и заставить его заменить master? У меня только одна ветвь на моем репо, которая является мастером, и я полностью перепутал ее, поэтому мне в основном нужно начинать с восходящего потока. Я думаю, что init выполнит эту работу, но есть ли более простой способ?

Ответ 1

Здесь (по крайней мере) есть две вещи, которые вы можете сделать здесь: вы можете отложить удаленное репо или вы можете reset --hard на общего предка, а затем выполнить извлечение, которое reset --hard к последнему коммиту на удаленном мастере.,

Чтобы быть конкретным, вот простое продолжение оригинального ответа Nevik Rehnel:

git reset --hard origin/master
git pull origin master

ПРИМЕЧАНИЕ: использование git reset --hard любые незафиксированные изменения, и может быть легко спутать себя с этой командой, если вы новичок в git, поэтому убедитесь, что у вас есть представление о том, что он собирается делать, прежде чем продолжить.

Ответ 2

а на главном сервере: git reset --hard origin/master

затем выполните очистку с помощью git gc (подробнее об этом на страницах руководства)

Обновление. Возможно, вам также понадобится git fetch origin (или git fetch origin master, если вы только хотите эту ветку); неважно, делаете ли вы это до или после reset. (Спасибо @eric-walker)

Ответ 3

Вы можете сделать это в одной команде:

git fetch --all && git reset --hard origin/master

Или в паре команд:

git fetch --all
git reset --hard origin/master

Заметьте, что вы потеряете ВСЕ ваши локальные изменения

Ответ 4

git reset <hash>  # you need to know the last good hash, so you can remove all your local commits

git fetch upstream
git checkout master
git merge upstream/master
git push origin master -f

вуаля, теперь твой форк вернулся к тому же как вверх по течению.