мерзавец вернуться в Egit - PullRequest
10 голосов
/ 07 января 2011

Можно ли сделать "git revert" в Egit для отката изменений, создав новый коммит (в отличие от извлечения старого коммита или выполнения полного сброса, который не создает новый коммит, откатывая изменения)?

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

Заранее спасибо!

Ответы [ 4 ]

10 голосов
/ 14 января 2011
  • установка последней ночной EGit (0.11.xx)
  • открыть просмотр истории
  • щелкните правой кнопкой мыши на коммите, который вы хотите вернуть в текущей проверенной ветке
  • нажмите «Вернуть коммит»

- Matthias

3 голосов
/ 07 января 2011

Если учесть этот коммит от 5 дней назад , называемый ' Объединить "Выполнить команду возврата" ' (Шон Пирс), похоже, он скоро будет доступен.

Здесь diff :

public class RevertCommandTest extends RepositoryTestCase {
       @Test
       public void testRevert() throws IOException, JGitInternalException,
                       GitAPIException {
               Git git = new Git(db);

               writeTrashFile("a", "first line\nsec. line\nthird line\n");
               git.add().addFilepattern("a").call();
               git.commit().setMessage("create a").call();

               writeTrashFile("b", "content\n");
               git.add().addFilepattern("b").call();
               git.commit().setMessage("create b").call();

               writeTrashFile("a", "first line\nsec. line\nthird line\nfourth line\n");
               git.add().addFilepattern("a").call();
               git.commit().setMessage("enlarged a").call();
               writeTrashFile("a",
                               "first line\nsecond line\nthird line\nfourth line\n");
               git.add().addFilepattern("a").call();
               RevCommit fixingA = git.commit().setMessage("fixed a").call();

               writeTrashFile("b", "first line\n");
               git.add().addFilepattern("b").call();
               git.commit().setMessage("fixed b").call();

               git.revert().include(fixingA).call();

               assertTrue(new File(db.getWorkTree(), "b").exists());
               checkFile(new File(db.getWorkTree(), "a"),
                               "first line\nsec. line\nthird line\nfourth line\n");
               Iterator<RevCommit> history = git.log().call().iterator();
               assertEquals("Revert \"fixed a\"", history.next().getShortMessage());
               assertEquals("fixed b", history.next().getFullMessage());
               assertEquals("fixed a", history.next().getFullMessage());
               assertEquals("enlarged a", history.next().getFullMessage());
               assertEquals("create b", history.next().getFullMessage());
               assertEquals("create a", history.next().getFullMessage());
               assertFalse(history.hasNext());
       }
}
1 голос
/ 08 июля 2015

Я не могу комментировать из-за низкой репутации, но я хотел добавить последнюю часть к ответу @Matthias Sohn на тот случай, если кто-нибудь, как я, найдет это через поиск того, как это сделать.Ниже приведены его шаги, поэтому вам не нужно прокручивать:

  • установить последнюю версию EGit за ночь (0.11.xx)
  • открыть просмотр истории
  • right-нажмите на коммит, который вы хотите отменить в текущей извлеченной ветке
  • нажмите «Восстановить коммит»

Это добавит запись вверху представления истории «Возврат [предыдущийкомментировать]Если вы щелкнете правой кнопкой мыши по этой новой записи, вы увидите возможность совершить операцию возврата.Это необходимо сделать из представления «История», поскольку, как сказал @Lennon, вы не можете фиксировать и отправлять из проводника пакетов.

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

0 голосов
/ 14 декабря 2016

Щелкните правой кнопкой мыши файл, который вы хотите восстановить -> Заменить на -> HEAD revision

...