Git Рабочее дерево грязное
Если я выполню git review
git показывает мне ошибку "Рабочее дерево грязное".
Я сделал коммит и отправил на проверку. После этого я обновляю ветку из апстрима используя git pull
, Теперь мне нужно изменить предыдущее сообщение о коммите, поэтому есть мои команды:
1) git reset <id-of-the-commit-to-modify>
2) git commit --amend
Vim был открыт, чтобы изменить мой коммит. Но здесь появляется информация о моем коммите и других коммитах, и я не знаю почему. Тем не менее, я изменил сообщение коммита и написал / закрыл vim.
3) git review
Эта команда вызывает эту ошибку:
Errors running git rebase -i remotes/gerrit/master
doc/source/configuration.rst: needs update
doc/source/developing.rst: needs update
tools/sample_data.sh: needs update
Working tree is dirty
Что я делаю не так?
2 ответа
git reset <id-of-the-commit-to-modify>
без опции режима по умолчанию --mixed
, Это то, что сказано о сбросе в руководстве
--mixed
Resets the index but not the working tree (i.e., the changed files are preserved but not marked for commit) and reports what has not been updated. This is the default action.
В основном это означает, что ваш индекс был сброшен, но не ваши рабочие файлы. Таким образом, все файлы, которые вы извлекли из апстрима, все еще остаются в вашем рабочем дереве. Вы должны использовать git reset --hard <id-of-the-commit-to-modify>
Это сбросит ваш индекс и удалит файлы, которые пришли с вашим апстримом. Затем вы можете изменить свой коммит и отправить его на рассмотрение.
Как только изменение было передано Gerrit, его можно получить напрямую. На обзорной доске Gerrit вы можете найти команду chekcout для каждого набора патчей, что-то вроде этого: git fetch ssh://ebalbar@gerrit.ericsson.se:29418/TCC/TitanSim refs/changes/86/129686/5 && git checkout FETCH_HEAD
Затем вы можете изменить коммит как обычно и снова нажать новое изменение. ПОСЛЕ ТОГО, КАК ОФОРМИТЬ ЛОКАЛЬНУЮ ВЕТЕЛИВУ И ВНЕШНИЙ ВЕРСИЯ: git reset --hard origin/<remote_branch>
также хороший ответ, как изменить коммит, который был передан напрямую.