Sì. Ci sono almeno due modi principali per farlo. Innanzitutto, non è necessario utilizzare "l'area di gestione temporanea", è possibile disporre di tutte le aree di gestione temporanea desiderate - impostare GIT_INDEX_FILE=/path/to/private/index
e procedere come desiderato; il secondo che puoi costruire ti commette da solo, direttamente. Non è nemmeno difficile.
Il nucleo del repository di Git si occupa di oggetti blob, tree e commit (anche qui non rilevanti, note e tag annotati). Il comando git per eseguire il dump degli oggetti è git cat-file -p
.
Un blob è solo un bag-o-bit. Aggiungi uno al repository con git hash-object -w
filename
, stamperà il ~ vero nome ~ del blob in quel file e aggiungerà il blob al repository. Un albero lega un oggetto a un nome di file system. Aggiungi uno al repository con git mktree
; per vedere cosa alimentarlo, stampa un albero con ad es. git cat-file -p HEAD^{tree}
. Aggiungi un commit al repository con git commit-tree
, in fondo, si dice git commit-tree -p
mom
-p
dad sometree
, impostare alcune variabili d'ambiente, e dei mangimi un messaggio di commit su stdin.
Questo è davvero tutto ciò che è necessario; se si desidera approfondire l'affettatura e la fustellatura con alberi e staging read-tree
e write-tree
può essere molto utile, se questo è per niente attraente, lo git core tutorial è una buona panoramica.
È possibile specificare nomi di file sulla riga di comando anche dopo il comando 'commit'. – Richard
@Richard Che non impegnerà i file non tracciati. Otterrai il messaggio di errore 'non corrisponde a nessun file noto a git' –