2011-08-16 15 views
6

Le mie scuse se questa è una domanda stupida, ma io sono un/VSTS ragazzo VSS cercando di convertire in Git :)Controllare in un singolo file in Git?

ho clonato un repository e tirato giù un carico di progetti di Visual Studio. Mentre lavoravo a quei progetti ho notato che un altro sviluppatore aveva inviato un file .sql non valido. Ho risolto il problema con il file .sql, ma non sono sicuro di come effettuare il check-in solo il file .sql

Le modifiche al mio codice sono tutte parzialmente cotte e pertanto non è possibile effettuare il check-in. Ho Git Extensions sul mio computer, e quando faccio clic destro sul file in Windows Explorer e vai su Git Extensions -> Commit, ci sono molti file referenziati sulla sinistra. Il file che voglio registrare ha il simbolo di una matita e tutti gli altri file hanno un simbolo verde +.

+0

Può valere la pena notare che in git, a differenza di molti dei suoi predecessori, c'è una distinzione tra: (1) "commit" di una modifica a un file (s) (con 'git commit') che semplicemente impegna passare al repository locale e (2) "spingere" la modifica (con 'git push'), che propaga la modifica in un repository remoto, in genere" origine "(analogo a un server VSS o CVS o Subversion). – Will

risposta

11

è sufficiente aggiungere le modifiche nel file sql all'indice ed eseguire git commit.

git add path/to/file.sql 
git commit -m 'fixed broken sql file' 

non preoccuparti per il tuo altri cambiamenti, fino a quando non si dispone di add li Ed, non saranno impegnati (per assicurarsi che non vi siano variazioni dell'indice, eseguire git reset prima di aggiungere il altre modifiche)

+0

mi ha battuto: p – johnny

+1

Puoi anche usare 'git status' per vedere quali file sono messi in scena nell'indice o' git diff --staged' per vedere quali modifiche sono in scena ... – johnny

+0

Legenda, grazie :) – plenderj

0

Se è possibile utilizzare gitbash o qualcosa di simile, utilizzare git add <filename>.

4

E 'probabilmente più sicuro/più semplice per farlo dalla riga di comando:

$ git add foo.sql 
$ git commit -m "Fixed foo.sql" 

Questo impegna solo il file foo.sql. Prima il commit si può fare:

$ git status 

per confermare che solo il file richiesto sarà impegnato (che elencherà gli altri file modificati a parte, ma non sarà "messo in scena" per il prossimo commit).

0

SmartGit può commettere modifiche dell'albero di lavoro da singoli file anche se sono in corso altri file.

0

Con le versioni attuali di git si può anche fare:

git commit <filename> 

Questo commetterà tutto in quel file e solo quel file. Ciò che è attualmente messo in scena per l'indice non ha importanza.

Alcune versioni di git richiedono argomenti aggiuntivi da inserire prima del nome file. Questo include -m <message>.

Problemi correlati