2015-01-22 4 views
0

Я изменил много файлов и добавил их в зону размещения Git. Затем, прежде чем совершать их, я понял, что мне пришлось изменить сообщение фиксации предыдущего коммита. Итак, я сделал git commit --amend и изменил сообщение фиксации без прохождения журнала изменений. Ну, это добавило файлы в промежуточной области к предыдущему фиксации тоже.git изменить добавленные файлы в промежуточной области тоже

Что мне делать, чтобы сделать предыдущую фиксацию в ее первоначальной форме и вернуть мои измененные файлы в промежуточную область, чтобы я мог выполнять их отдельно?

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

+0

У вас есть неустановленные изменения? –

+0

@ JosephK.Strauss Нет, не знаю. – darkryder

+0

У вас все еще есть идентификатор фиксации предыдущего коммита? В этом случае вы можете * проверить * его * вне *. – opatut

ответ

2

Вы можете найти SHA1 предыдущего состояния вашей предыдущей фиксации с помощью

git reflog 

Используя этот хэш, вы можете вернуть текущую ветвь в предыдущее состояние с помощью

git reset --soft <SHA1> 

После этого, вы можете сохранить ваши изменения, а затем сделать git commit --amend, чтобы изменить сообщение фиксации.

+0

Спасибо :) Когда-нибудь я собираюсь сесть и вынуть пару дней и прочитать все о git. Когда-нибудь. – darkryder

1

Исходя из значений идентификатора фиксации в рефлоге, выполните следующие действия.

git reflog -5 #I assume this will be good enough; increase the value as needed 
git reset --hard <commit-with-bad-message> 
git commit --amend -m '<New message>' 
git read-tree --reset -u <commit-that-had-extra-files> 

Теперь вы должны быть там, где хотели бы быть. Продолжайте работать.