Я не очень часто работаю с git или командной строкой linux, и кажется, что я его много испортил. Я человек окон, и я использую cygwin для эмуляции этой среды.как сбросить git-хранилище раз и навсегда в чистое состояние
Ситуация:
Я несколько репозиториев гусеничный, один я работаю и некоторые другие, которые читают только для меня.
иногда, когда я долгое время не вытягиваю из них (один из них превышал 2 тыс.), То иногда git status
говорит мне, что ветви расходятся. Я не знаю, как это происходит, но я тогда 2k фиксирует отставание и 1 вперед. Затем вытягивание происходит из-за некоторых файлов, вызывающих конфликты, которые невозможно разрешить.
Это оставляет мне проблему, что у меня теперь есть репозиторий, из которого я больше не могу тянуть, потому что у него конфликты.
Итак, мой вопрос: как я могу эффективно вытащить из этого репозитория снова, не столкнувшись с конфликтами? Мне все равно, никаких изменений.
Это решение, которое я должен делать каждый раз, когда он путает:
git log --max-parents=0 head # copy ID on bottom
git reset --hard <ID-you-have-copied>
git clean -f -d
git pull
Это глупо, и я хотел бы иметь, что в одной команде. Я знаю о git-псевдонимах, но я понятия не имею, как получить идентификатор фиксации из команды 1 в команду 2. Я также хорошо разбираюсь в сценарии оболочки, который я могу разместить где-то, что делает это для меня, но он должен быть динамическим, без жесткого кодированного идентификатора.
Похоже, я должен сбросить ветку позади, что неисправен несуществующая фиксация и затем я снова вперед
Есть ли что-то очевидно, что мне не хватает?
Что такое 'git -max-parents = 0 head # copy ID внизу?? Что это должно делать? – Zloj
@Zloj Извините за путаницу. Теперь я исправил команду в вопросе, но мне больше не нужен этот способ, поскольку ответ был дан, что, похоже, работает. – AyrA
спасибо за разъяснение. Рад, что ваш плоблем решен. – Zloj