как использовать libgit2 для получения значения SHA, когда я хочу зафиксировать новый файл в git

как использовать libgit2 для получения значения SHA, когда я хочу зафиксировать новый файл в git Команда в оболочке:

git add
git commit
git pull
git push

person alexqinbj    schedule 11.01.2013    source источник


Ответы (1)


Следующие тесты libgit2 помогут вам начать работу:

  • commitstagedfile.c< /strong>: как git add файл в промежуточную область, затем выполнить git commit и получить sha созданного коммита.

  • fetch.c: как git fetch и обновить содержимое локального репозитория с помощью исходных изменений

  • push.c: как отправить локальные изменения в вышестоящий репозиторий, аналогично git push

Примечание. git pull — это комбинация git fetch и git merge. Возможности слияния пока недоступны в libgit2.

person nulltoken    schedule 11.01.2013
comment
В commitstagedfile.c он получает oid из str.(git_oid_fromstr(&expected_commit_oid, 1fe3126578fc4eca68c193e4a3a0a14a0704624d)). У меня уже есть каталог git, но я не знаю, как получить (const git_tree *tree), когда я использую git_commit_create вместо тестового шестнадцатеричного значения. Можете ли вы объяснить процесс этого, спасибо - person alexqinbj; 11.01.2013
comment
Дерево создается создается в базе данных объектов из индекса. Чтобы передать его методу git_commit_creat_v(), сначала нужно получено из базы данных объектов. - person nulltoken; 11.01.2013
comment
Спасибо :) Я понял. Я новичок в использовании libgit2. Вот моя мысль в начале, можете ли вы сказать мне, что я подумал неправильно? Во-первых, создайте большой двоичный объект, используя git_blob_create_fromworkdir, во-вторых, git_treebuilder_create и git_tree_entry для создания построителя дерева, затем используйте git_treebuilder_write для записи содержимого и используйте git_tree_lookup для получения git_tree? - person alexqinbj; 12.01.2013