Использование TortoiseGit удаляет все после определенного коммита - PullRequest
9 голосов
/ 28 марта 2010

Используя TortoiseGit (я пытаюсь избежать использования командной строки), как удалить все коммиты, которые были получены из определенного коммита, и «вернуться в прошлое» (пример использования: продолжал делать что-то, полагал, что я не вроде того, куда он шел, и решил пойти «назад», не обращая внимания на все промежуточное).

Короче говоря, я хочу перейти на 5 коммитов "назад" и впоследствии удалить их.

Ответы [ 3 ]

27 голосов
/ 09 декабря 2011

Перейти к TortoiseGit -> Показать журнал. Выберите самый последний коммит, который вы хотите сохранить, все вышеперечисленное будет стерто. Затем щелкните правой кнопкой мыши на нем и выберите «Сброс» мастер «к этому» и выберите Hard. Будьте осторожны, потому что, как только вы сделаете это, все коммиты после него будут навсегда потеряны, если они не будут сохранены где-то в другой ветке.

2 голосов
/ 28 марта 2010

Я никогда ничего не использовал в «Черепахе» (если не считать группу «electronica»), но я дам вам эту информацию на случай, если вы не найдете способ сделать это с помощью графического интерфейса или в итоге вы решите перейти в CLI. в конце концов.

Как упоминает @Tuxified, вы можете сделать это с помощью git reset --hard <COMMIT>. Вам нужно указать коммит, который может быть выполнен любым пугающим набором возможных способов; наиболее распространенные имеют такие формы, как HEAD~4, который указывает на фиксацию 4 перед первым заголовком текущей ветви, и deadbeef42, который указывает на фиксацию, чей SHA1 начинается с 0xdeadbeef42. Если вы используете Linux или OSX, вы можете получить полную информацию о спецификаторах фиксации через man git-rev-parse, в разделе «УКАЗАНИЯ ПЕРЕСМОТРОВ».

Вы также можете переименовать текущую ветку (git branch -m new_branch_name), а затем создать новую ветку с головой в том месте, куда вы хотите вернуться. Преимущество состоит в том, что если вы захотите использовать все или некоторые вещи, которые вы там делали, вы все равно сможете легко получить к ним доступ; и если вы опечатаете коммит, вы спасетесь от большого священного момента. Плюс ветки git очень легкие, поэтому единственным реальным недостатком является то, что в списке будет еще одна ветка. Чтобы создать новую основную ветку, вы должны использовать git branch master <COMMIT>, а затем проверить это. Таким образом, чистый эффект здесь такой же, как и в первом варианте, за исключением того, что ваши старые изменения сохраняются в ветке new_branch_name. Вы даже можете объединить эти изменения позже, после новых коммитов, в master, если захотите.

Обратите внимание, что любой из этих методов считается " переписывая историю " и может вызвать проблемы, если вы делитесь своим репо с другими. Если вы сообразительны и продвигаетесь в резервное хранилище в облачном городе или на другом компьютере, вам придется исправить ситуацию с этой стороны, прежде чем вы сможете перейти к нему снова.

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

0 голосов
/ 28 марта 2010

Из командной строки вы можете использовать команду возврата или сброса. TortoiseGit должны иметь похожие команды, возможно, вы можете получить к ним доступ, посмотрев журнал фиксации?

(я не использовал TortoiseGit, поэтому не могу его проверить)

...