Intereting Posts
Как восстановить (загрузить) ФИЛИАЛ из дампа Subversion в новый репозиторий на новом сервере? TFS новый ПК Checkout GitList не работает, возможно, из-за прав пользователя Linux Преобразование исходного файла diff в цветной вывод html Как удалить поврежденный файл из SVN? Каков наилучший способ слияния определенных изменений в нескольких ветвях и сундуках? Git синхронизирует одну ветвь в двух репозиториях, которые клонируются от одного и того же хозяина Как вы начинаете с репозитария subversion? github – попытка push / pull / update (не уверена в терминологии) обновленный код от github до удаленного сервера через терминал / ssh mac os Доступ запрещен к файлу в Windows 7 для учетной записи администратора Как я могу использовать bash filedescriptors с git am? Коррумпированный файл пакета на git aws.push Фиксированная ветвь с расширением потока Git Eclipse: привязать командный ключ для отображения аннотаций SVN Что происходит, когда вы объединяете git merge и rebase?

Git: вернуть старый фиксатор в один файл

Я довольно новичок в использовании revert в git, и мне интересно, можно ли сделать что-то вроде следующего. Допустим, я уже сделал несколько коммитов, и у меня есть (самоочевидный) текстовый файл, который выглядит следующим образом:

 This line was added at commit AAAAA This line was added at commit BBBBB This line was added at commit CCCCC 

Я хотел бы использовать revert для удаления изменений, сделанных фиксацией BBBBB, чтобы получить файл, который выглядит так:

 This line was added at commit AAAAA This line was added at commit CCCCC 

Однако возврат к фиксации BBBBB приводит к конфликту слиянием. Есть ли способ избежать конфликта?

Однако возврат к фиксации BBBBB приводит к конфликту слиянием. Есть ли способ избежать конфликта?

Чтобы узнать, что именно вызывает конфликт,

 git checkout --merge --conflict=diff3 -- path/to/file 

который покажет вам оригинал и обе измененные версии текста git, не желающие авторизоваться.

Что сводится к тому, что git объединяет изменение от возвращенного фиксации к его родительскому с изменением от вернувшегося фиксации к текущей версии:

  bbbbb verson -> aaaaa version, 

а также

  bbbbb version -> cccccc version (+ whatever else) 

и смены ханов перекрываются, поэтому git не собирается авторизоваться.

Как практический вопрос, учитывая количество слияния, выполняемое в нескольких огромных проектах, вы можете быть уверены, что любой automerging git отказывается делать плохое результаты слишком часто, чтобы терпеть.

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

 git checkout HEAD~1 directory/path/file.txt git add directory/path/file.txt git commit -m "directory/path/file.txt reverted" 

В основном git checkout HEAD . сбросить все файлы из рабочего каталога или только указанные каталоги или только отдельные файлы, в указанное состояние данного фиксации.

Также, если вы хотите вернуть один каталог в состояние 3 коммитов назад, вы можете:

 git checkout HEAD~3 some/directory/