Я читаю о git-объектах: blob, tree, commit, tag. Чтобы лучше понять, как работает git, я пробовал команду низкого уровня, например write-tree
и commit-tree
.В чем разница между git commit и git commit-tree
mkdir test; cd test
->git init
- создать файл и
git add file
. Я могу видеть блоб и дерева объектов генерируются в.git/objects
git write-tree
для печати текущего treeIDgit commit-tree treeID -m "commit a tree"
совершить это дерево. После этой операции создается объект фиксации, и я вижу, что он содержит автора, дату и т. Д. Однако я не могу проверить свои фиксации с помощьюgit log
, ошибка:fatal: bad default revision 'HEAD'
.
После выполнения операций, когда я запустил git status
, я вижу, что файл все еще находится в индексе, ожидающем фиксации. Каково использование commit-tree
и в чем разница между commit-tree
и `commit '?
Вы прочитали [этот раздел] (http://git-scm.com/book/en/v1/Git-Internals-Git-Objects) книги Pro Git? Он должен вас заинтересовать, потому что он подробно описывает, как создавать коммиты, используя команды «Сантехника» (т. Е. Низкоуровневые Git). – Jubobs
Возможно, вы должны изменить свой вопрос и добавить точную последовательность команд, которые вы использовали; что облегчило бы людям здесь определить, что в этом плохого. – Jubobs