Проверьте конкретную версию из репозитория Git с помощью JGit.

Я пытаюсь использовать jGit для клонирования репозитория и проверки определенного коммита.

Предполагая, что хэш фиксации: 1e9ae842ca94f326215358917c620ac407323c81.

Мой первый шаг:

// Cloning the repository
    Git.cloneRepository()
        .setURI(remotePath)
        .setDirectory(localPath)
        .call();

Затем я нашел еще один вопрос, который предложил этот подход:

git.checkout().
                setCreateBranch(true).
                setName("branchName").
                setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK).
                setStartPoint("origin/" + branchName).
                call();

Но я не уверен, как связать их вместе?

есть идеи?


person MrD    schedule 22.07.2014    source источник


Ответы (1)


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

Git.cloneRepository().setURI(remotePath).setDirectory(localPath).call();

Чтобы просто проверить коммит по его идентификатору, вы можете вызвать checkout следующим образом:

git.checkout().setName("<id-to-commit>").call();

Но обратите внимание, что это приведет к отсоединенному HEAD. Чтобы избежать этого, вы можете указать checkout сначала создать новую ветку, которая указывает на коммит, а затем проверить эту ветку.

git.checkout().setCreateBranch(true).setName("new-branch").setStartPoint("<id-to-commit>").call();

API не очень интуитивно понятен, но он делает то, что должен.

person Rüdiger Herrmann    schedule 22.07.2014
comment
Спасибо, это как раз то, что мне было нужно! - person MrD; 22.07.2014
comment
@rüdiger-herrmann, как удалить новую ветку после оформления заказа? - person Ana Sustic; 24.01.2020
comment
@AnaSustic см. здесь: stackoverflow.com/questions/24055688/ - person Rüdiger Herrmann; 24.01.2020