2013-08-07 3 views
0

Вот моя ситуация:Как откат одного конкретного обязательства в Git?

  1. около 10 коммитов назад, я случайно сделал плохой фиксации. Я переключался между UNIX/Windows и коротким рассказом, я сделал фиксацию, когда был изменен файл EVERY из-за окончания строки.

  2. После этого я сделал около 10 коммитов.

  3. Теперь я понимаю, что для того, чтобы PUSH в удаленном репозитории, мне нужно отменить фиксацию с шага (1) (есть параметр в .gitattributes, который я изменил для этого, чтобы нормализовать).

Как мне вернуться к этому моменту времени и не совершать каждый файл? А потом мне нужно переделать остальные 9 изменений после этого?

+0

Вы еще нажали 10 коммитов на свой пульт? Является ли ваш удаленный частный или общедоступный/общедоступный? Это важно. –

+0

Кроме того, вы прочитали [бесплатную онлайн-книгу Pro Git] (http://git-scm.com/book)? Существует раздел, в котором говорится о [переписывании истории] (http://git-scm.com/book/en/Git-Tools-Rewriting-History). Я также рекомендую главы 1-3 и 6-6.5. Узнайте, как переустанавливать, как интерактивно, так и не интерактивно. –

ответ

4

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

$ git rebase -i head~10 # Go back 10 commits in time. 

В списке TODO фиксаций выберите edit для одного в верхней части списка:

edit d6627aa Commit message 1 
pick 0efdaca Commit message 2 
pick 9ec752f Commit message 3 
pick c84bf57 Commit message 4 
pick d4bcd50 Commit message 5 
pick c0110c9 Commit message 6 
pick 6606d13 Commit message 7 
pick 22933be Commit message 8 
pick cab2453 Commit message 9 
pick 05add41 Commit message 10 

Затем внести изменения последнего коммита изменить окончания строк, чтобы быть как вы хотите:

# Modify your .gitattributes, then amend last commit 
$ git commit --amend 
$ git rebase --continue 

Чтобы узнать больше о перезагрузке, см. Раздел Rewriting History раздела free online Pro Git book, а также official Linux Kernel Git documentation for rebase.

Смежные вопросы