Tak. Istnieją co najmniej dwa główne sposoby robienia tego. Po pierwsze, nie musisz używać "miejsca" przemieszczania, możesz mieć dowolną liczbę miejsc postoju - ustaw GIT_INDEX_FILE=/path/to/private/index
i rób to, co chcesz; po drugie możesz sam skonstruować commit, bezpośrednio. To nawet nie jest trudne.
Rdzeń repozytorium Git zajmuje się obiektami typu blob, tree i commit (również nieistotnymi tutaj, notatkami i znacznikami opisowymi). Polecenie git do zrzutu obiektów to git cat-file -p
.
Kropelka to tylko bag-o-bity. Dodaj jeden do repozytorium, używając git hash-object -w
filename
, wydrukuje on ~ prawdziwe imię ~ kropki w tym pliku i doda go do repo. Drzewo wiąże obiekt z nazwą systemu plików. Dodaj jeden do repozytorium z git mktree
; aby zobaczyć, jak go nakarmić, wydrukuj drzewo za pomocą np. git cat-file -p HEAD^{tree}
. Dodaj zobowiązać się do repozytorium z git commit-tree
, w zasadzie, można powiedzieć git commit-tree -p
mom
-p
dad sometree
, ustawić kilka zmiennych środowiskowych i paszy commit wiadomość na stdin.
To wszystko, co konieczne; Jeśli chcesz się dalej kroić i pokroić w kostkę z drzewami i wystawiać na próbę read-tree
i write-tree
może być bardzo przydatny, jeśli jest to w ogóle atrakcyjne dla Ciebie, git core tutorial to dobry przegląd.
Możesz również określić nazwy plików w linii poleceń po 'commit'. – Richard
@Richard To nie będzie zatwierdzać plików, które są nieśledzone. Otrzymasz komunikat o błędzie "nie pasuje do żadnego pliku znanego git" –