2011-06-27 3 views
2

Итак, наш дизайнер внес некоторые изменения в некоторые изображения и внес изменения. Так что теперь наша git log выглядит примерно так:Git: Как отменить/отменить изменение изображения?

Commit 1: Changed images 
Commit 2: Oops, forgot to commit a few images 

... то бизнес хотел, чтобы они выглядят по-разному, так что дизайнер изменил их, и снова совершили их:

Commit 1: Changed images 
Commit 2: Oops, forgot to commit a few images 
Commit 3: Changed images again 
Commit 4: Minor tweaks to new images just committed 

... теперь бизнес решил, что им понравились изображения в первый раз. Итак, теперь нам нужно вернуться к тому, как они были в начале. Я пробовал несколько разных подходов, и я думаю, что подход, который мне нужен, - git revert, так что я могу создать новую фиксацию, которая возвращает образы так, как раньше. Однако у меня, похоже, возникают конфликты, когда я пытаюсь это сделать. Как мне это сделать, чтобы я мог перезаписать новые изображения с изменениями, сделанными в Commit 1 и Commit 2?

ответ

7

Что вы хотите сделать, это проверить файл из старой фиксации.

Это будет выглядеть так:

git checkout <commit 1 refspec> imagefilename.png 

, которые совершают refspec может быть ГОЛОВА {4} или может быть ША или, может быть тег .... То, что относится к этой фиксации. Затем он будет сидеть в вашем рабочем каталоге как изменение для добавления и фиксации.

1

Если ни одна из них не является компромиссом, то git revert <Commit 3> <Commit 4> должен выполнить трюк (где <Commit X> - это SHA1 фиксации). Сделайте git stash, если у вас есть незафиксированные изменения.

В качестве альтернативы, выполните git checkout <Commit 2> -- <filenames of images to be restored>, а затем git add и фиксацию.

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

  • Нет связанных вопросов^_^