version-control - nike - mercurial vs git




Qual è la differenza tra hg forget e hg remove? (4)

Voglio mercurial per rimuovere diversi file dallo stato corrente del repository. Tuttavia, voglio che i file esistano nella cronologia precedente.

In che modo forget e remove differiscono e possono fare ciò che voglio?


Un file può essere rintracciato o no, si usa hg add per tenere traccia di un file e hg remove or hg si dimentica di deselezionarlo. Usando hg remove senza flag entrambi cancelleranno il file e non lo tracciano, hg forget lo disattiverà semplicemente senza cancellarlo.


' hg forget ' è solo una scorciatoia per ' hg remove -Af '. hg remove ' hg remove ':

... e -Af può essere utilizzato per rimuovere i file dalla revisione successiva senza eliminarli dalla directory di lavoro.

In -Af : ' remove ' cancella il file dalla copia di lavoro su disco (a meno che non si usi -Af ) e ' forget ' no.


Il modo migliore per farlo è che hg forget è identico a hg remove tranne per il fatto che lascia i file nella tua copia di lavoro. I file vengono lasciati indietro come file non tracciati e ora possono essere ignorati facoltativamente con un modello in .hgignore .

In altre parole, non posso dire se hai usato hg forget o hg remove quando tiro da te. Un file che hai eseguito hg forget on verrà eliminato quando eseguirò l'aggiornamento a quel changeset, proprio come se avessi usato hg remove .


Se si utilizza "hg remove b" su un file con stato "A", il che significa che è stato aggiunto ma non impegnato, Mercurial risponderà:

  not removing b: file has been marked for add (use forget to undo)

Questa risposta è una spiegazione molto chiara della differenza tra rimuovere e dimenticare.

La mia comprensione è che "hg forget" serve per annullare un file aggiunto ma non impegnato, in modo che non venga tracciato dal controllo della versione; mentre "hg remove" serve per estrarre un file impegnato dal controllo di versione.

Questo thread ha un esempio per utilizzare hg remove contro file di 7 diversi tipi di stato.





mercurial