2015-04-28 2 views
0

У меня есть проект git и имеет около 5 коммитов в диапазоне от 2-4 файлов. Я сделал один коммит, который затрагивал два файла, которые я не должен был делать с проверкой этой ветки. Я хотел бы вернуть только изменения, сделанные в этой конкретной фиксации, тем самым возвращая эти два файла туда, где они были ранее.возвращение назад git commit, который не является последним

У этих файлов нет другой истории изменений на этой ветке (опять же, они не должны были быть изменены в этой ветке вообще). Как мне это сделать?

В качестве бонуса было бы здорово «переписать» эту фиксацию ветке, которую я должен был проверить в то время, но это, вероятно, слишком амбициозно. Я всегда могу вносить изменения вручную вручную с проверкой правильной ветки.

Одна из последних вещей, я использую sourceTree, но знание CLI-метода было бы хорошим.

ответ

0

Не уверен, что я вас понял, но то, что я должен был бы сделать, это изменить порядок фиксаций и открыть новые филиалы

Во-первых, скажем, у вас есть те коммиты:

C5 
C4 
C3 
C2 
C1 

Теперь я хочу вернуться совершить c3 Так что я бы

git rebase -i HEAD~3 

Теперь я получить новый экран, который покажет мне три последних коммита, просто изменить порядок коммитов, и место c3 в последнем месте.

Теперь сохраните и запустите.

Теперь для удаления последней фиксации, так как в этот момент последний коммит c3, просто сделать

git reset --hard HEAD^ 

Это сбросит только один фиксации назад.

После вы закончили, что вы должны нажать ваши изменения в репозиторий, вы можете сделать это с помощью:

git push origin mater -f 

Кладем -f для форсирования наших изменений в репозиторий.

Просто убедитесь, что вы уверены в своих изменениях, как вы возвращаетесь историю, и это действие не revertable

0

Просто используйте git revert. Например.

A----B----C----D 
      ^
       | 
       master 

, если вы хотите, чтобы вернуть все изменения в фиксации Bgit revert B приведет к

A----B----C----D----B' 
        ^
        | 
        master 

Если совершить B содержит много изменений, и вы только хотите partitially вернуть коммита вы должны прочитать http://www.link-intersystems.com/blog/2015/04/19/how-to-partially-revert-a-commit-in-git/

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