Sto usando Linux, ma penso di vedere di cosa stai parlando. In gitk
c'è un'opzione "Scrivi commit su file" quando si fa clic con il pulsante destro del mouse su un commit, che apre una finestra di dialogo che esegue il comando git diff-tree --stdin -p --pretty
per impostazione predefinita.
git apply
è solo per applicare diffs, cioè non creerà l'oggetto commit in modo che non debba essere utilizzato. git am
dovrebbe essere lo strumento corretto per eseguire questa operazione, poiché crea oggetti commit. Tuttavia, non capisce il formato in uscita dal comando precedente e crea l'errore che stai vedendo.
L'opzione più semplice è probabilmente quella di creare la patch utilizzando un formato git am
comprensibile utilizzando git format-patch
anziché git diff-tree
. Potrebbe esserci un modo per forzare git am
a comprendere il formato git diff-tree
, ma io non eseguo patch in modo tale che non ne sono consapevole.
fonte
2012-04-19 16:00:24
Questo è molto poco indicato - utilizzare la stessa terminologia di git. Non capisco cosa intendi con 'scritto un commit su un file' e io mantengo git-gui. Hai commesso delle modifiche in un file e poi hai generato una patch in qualche modo? I dettagli contano se ti aspetti di ricevere assistenza utile. Come è stata generata la patch - * esattamente *. Come hai notato, git apply e git am accettano file in formato diverso - ci si aspetta patch, le altre email con patch inline e commit. Sospetto che la risposta qui sotto sia effettivamente corretta. – patthoyts
@patthoyts In quale altro modo descrivo facendo clic sul pulsante "Scrivi impegno su file"? –
Sembra che ci sia un'opzione "write commit to file" in 'gitk', che fa apparire una finestra di dialogo che esegue il comando' git diff-tree --stdin -p --pretty'. 'git am' a quanto pare non capisce questo formato. 'git apply' è solo per applicare diffs, cioè non creerà l'oggetto commit. –