Как отменить изменения с помощью репо - PullRequest
43 голосов
/ 16 февраля 2011

repo status показывает мне много нежелательных изменений.

Было бы дублировано, если я войду в каждый проект и использую git reset --hard.

Есть ли способ сбросить все изменения с помощью репо, что-то вроде repo reset --hard?

Ответы [ 5 ]

93 голосов
/ 07 августа 2013

Это команда, которую я использую для такого рода вещей, очень полезная

repo forall -vc "git reset --hard"

Что здесь все значит?

, которую repo forall выполнит длявсе репозитории.

- - v является многословным, поэтому выводит вывод команды

-c "COMMAND TO EXECUTE" - фактическая команда, которую вы хотите

20 голосов
/ 25 февраля 2014

Если необходимо вернуть рабочую папку в состояние clean , где у вас нет локальных изменений и нет неотслеживаемых файлов (т. Е. Где состояние репо ничего не показывает), нашел эти два подхода полезными при синхронизации репо и удаленных / измененных файлах

repo forall -c 'git reset --hard ; git clean -fdx' 

или

rm -rf * ; repo sync -l
// note that .repo is preserved after that

Обратите внимание, что это не эквивалентно инициализации нового локального репо и синхронизации (например, сохранен тайник)

Если вы не уверены, что происходит, ознакомьтесь с полной веткой Синхронизация репо и удаление / изменение файлов

9 голосов
/ 28 июля 2012

Я использую команду repo forall с приведенным ниже синтаксисом, и это помогает мне сбросить файлы отслеживания.

repo forall -p -c 'git checkout -f foo'

, где foo следует заменить на допустимое имя ветви.

4 голосов
/ 11 марта 2012
#!/bin/bash
for gitdir in $(find . -name .git); do
    pushd $(dirname $gitdir)
    git reset --hard
    popd
done
0 голосов
/ 06 марта 2012

Вы можете использовать команду repo, как показано ниже, чтобы отменить все ваши изменения:

repo sync -d

Это вернет все ваши изменения обратно к исходной ревизии.

Отредактировано:

Приведенная выше команда работает только с версией на тот момент.

Рабочая команда:

repo forall -vc "git reset --hard"

Описание команд и опций

  • FORALL

Выполняет заданную команду оболочки в каждом проекте

Опции (которые можно использовать с командой forall)

-c: команда и аргументы для выполнения. Команда оценивается через / bin / sh и любые аргументы после нее передаются как shell позиционные параметры.

-p: показывать заголовки проекта перед выводом указанной команды. Это достигается путем привязки каналов к командам stdin, stdout и стерр потоков, и трубопровод все выходные в непрерывный поток, который отображается в одной сессии пейджера.

-v: показать сообщения, которые команда записывает в stderr.

Для получения дополнительной информации см. документ репо

...