Ответ 1
Вы можете выполнить решение, подобное "Force git, чтобы перезаписать локальные файлы при удалении.
git fetch --all
git reset --hard origin/abranch
git checkout $branch
Это будет только одна выборка.
Есть ли какая-либо команда git (или короткая последовательность команд), которая будет безопасно и уверенно делать следующее:
В настоящее время я застрял:
git fetch -p
git stash
git stash drop
git checkout $branch
git pull
но это беспокоит меня, потому что меня спрашивают пароль два раза (через fetch
и pull
). Как правило, я был бы доволен любым решением, если пароль нужен только один раз.
Несколько примечаний:
Вы можете выполнить решение, подобное "Force git, чтобы перезаписать локальные файлы при удалении.
git fetch --all
git reset --hard origin/abranch
git checkout $branch
Это будет только одна выборка.
Пара пунктов:
git stash
+ git stash drop
можно заменить на git reset --hard
... или, даже короче, добавьте команду -f
в checkout
:
git checkout -f -b $branch
Это отклонит любые локальные изменения, как если бы git reset --hard
использовался до проверки.
Что касается основного вопроса:
вместо того, чтобы вытащить последний шаг, вы можете просто слить соответствующую ветку с пульта в вашу локальную ветвь: git merge $branch origin/$branch
, я считаю, что он не попал в пульт. Если это так, это устраняет необходимость в учетных документах и, следовательно, затрагивает вашу самую большую проблему.
git reset и git очистка может быть чрезмерной в некоторых ситуациях (и быть огромной тратой времени).
Если у вас просто есть сообщение типа "Следующие неподписанные файлы будут перезаписаны...", и вы хотите, чтобы удаленный/исходный/восходящий поток переписывал эти конфликтующие неподписанные файлы, тогда git checkout -f <branch>
- лучший вариант.
Если вы похожи на меня, другой вариант - очистить и выполнить "hard" reset, а затем перекомпилировать ваш проект.