Git, самый безопасный способ сделать эквивалентный запуск заново и избавиться от локальных изменений? - PullRequest
0 голосов
/ 11 марта 2020

Хорошо, этот вопрос задавался много-много раз, и есть десятки разных ответов. Большинство из них включают в себя сброс какого-либо рода, и каждый сопровождается оговорками и особыми случаями.

Я проверил ветку, например, mybranch /velop. чтобы протестировать, я изменил некоторые файлы (слишком много, чтобы их можно было исправить отдельно с помощью «get checkout»), и добавил некоторые файлы (слишком много, чтобы удалить вручную)

Теперь я хочу получить последнюю версию mybranch / develop , которые другие разработчики изменили, но не могут, конечно, из-за локальных изменений, которые я хочу отменить.

Я не зафиксировал, поставил или что-то еще.

Мой go - метод для повторного запуска состоит в том, чтобы удалить репо, клонировать его, а затем снова оформить ветку.

Однако репо теперь составляет 5 ГБ, а в нашем офисе у нас всего 5 Мбит, поэтому это занимает несколько дней. Я должен был сделать локальную копию репозитория перед изменением файлов, чтобы я мог копировать его обратно без риска.

Я попытался прочитать документацию по перезагрузке, но для этого требуется значительная копия умственные способности, чтобы понять сложные и подробные внутренние работы git.

Я предполагаю, что мне нужно выполнить "git reset --hard", но чтобы избежать нанесения непоправимого ущерба, я хотел бы проверить, не сломается ли что-нибудь, и это "правильное" решение.

Действительно, я хочу снова проверить ту же ветку и игнорировать (заменить) локальные изменения, которые могут включать новые файлы, новые каталоги, измененные файлы и т. Д. c.

что-то вроде "git checkout -ignore_warnings" или "git checkout -force"

Я вижу, есть эта команда "git checkout -f BRANCH-NAME"

Так может Я делаю "git checkout -f mybranch / develop"?

Если так, то почему все рекомендуют использовать сброс?

== ОБНОВЛЕНИЕ ==

Хорошо, я попробовал "git checkout -f -", и это не сработало. Он избавился от ошибки измененных файлов, но не от добавленных файлов.

1 Ответ

1 голос
/ 11 марта 2020

git checkout -f mybranch/develop не будет работать, потому что вы пытаетесь оформить заказ в той же ветке, в которой находитесь.
Как вы сказали, git reset --hard - это рекомендуемый способ легко избавиться от всех локальных изменений.
Если вы боитесь запускать команды, которые вызывают удаление вещей, вы можете играть более безопасно, выполнив:

git add -A
git stash

Это избавит вас от всех незафиксированных изменений, сохранив их в стороне в режиме sh.
Если вы сожалеете о том, что сделали, и sh вернули процесс обратно, просто запустите git stash pop.

https://www.atlassian.com/git/tutorials/saving-changes/git-stash

Кстати, я не рекомендую вам работать с git без управления этими основами, потребуется некоторое время, чтобы погрузиться немного глубже, это будет стоило того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...