2009-11-16 24 views
25

Ho appena commutato il mio albero di lavoro, aggiunto all'indice prima, con "$ git commit -m 'test'" Ho salvato lo stdout-put da questo ad un file e vedo in cima ad esso che esso dicegit commit problems

# On branch master 
# Changed but not updated: 
# (use "git add/rm ..." to update what will be commited) 
# (use "git checkout -- ..." to discard changes in working directory)" 

il problema è che il mio albero di lavoro non viene impegnata per il repo, e ho la sensazione che questo abbia a che fare con esso

grazie

+0

Quale sistema operativo stai usando? In particolare, stai usando Git su Windows e, in caso affermativo, in quale ambiente? –

+0

Server Ubuntu, git 1.5.6 – deepblue

+1

La prima cosa che potrei suggerire è di aggiornare la versione di Git, l'ultima versione è 1.6.5.3. Sono abbastanza sicuro che quei particolari messaggi che hai citato siano stati migliorati dal 1.5.x. –

risposta

5

Prima di impegnarsi un cambiamento, devi prima aggiungerlo all'indice:

git add myfile 
git commit -m "test" 

In alternativa, è possibile lavorare in uno stile più SVN-like e commettere tutto ciò che è cambiato:

git commit -a -m "test" 

Oppure si può semplicemente aggiungere-e-commettere un singolo file:

git commit myfile -m "test" 
+0

ha fatto tutto questo. come ho accennato in un commento alla risposta di Jed, ho spostato un sacco di file in modo da non pensare che commit -a funzionerebbe in questo caso dato che i file vengono cancellati e reintrodotti ... e penserei che git li tratti come nuovi file quindi – deepblue

+0

Posso solo suggerire che non hai aggiunto i file al repository quando pensavi di averlo fatto; il tuo messaggio è esattamente quello che vedo quando eseguo 'git commit' senza' git add' prima. –

+0

strano. Faccio un 'git add.' ogni volta. quello dovrebbe fare il trucco.hmmm. grazie per averlo indicato però – deepblue

0

Devi davvero leggere la documentazione.

git add yourfile 
git commit -m "test" 

Oppure, per commettere tutti i file modificati -

git commit -a -m "test" 
+0

naturalmente ho aggiunto l'albero di lavoro all'indice prima ($ git add.), Dopo che ho eseguito ($ git commit -m 'test'> view_file). Ho riorganizzato il mio albero di lavoro un po 'dall'ultimo commit così tanti file cancellati vecchi posti e reinserimento di quelli in posti nuovi ... ecco perché sto salvando l'output su un file in modo da poter rivedere ciò che git ha detto – deepblue

2

facevi un git add . prima di commesso?

È sempre consigliabile fare un git status prima di git add o git commit per vedere anche cosa è cambiato e messo in scena.

È anche molto pratico fare git diff per vedere le modifiche specifiche che si sta per eseguire il commit.

Ecco cosa visualizza git status se è stato aggiunto un file e quindi rinominato.

[email protected]:~$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: foo.txt 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: foo.txt 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# bar.txt 

A questo punto si può solo fare git add . e poi git status will give you more information, perhaps pointing out that you still have a new file and a deleted file called foo.txt . To fix this you need to manually git rm foo.txt before doing git commit`

in futuro, se si dispone di file in un repo git che si desidera sposta dovresti usare git mv.

+0

yeah' git status ' è cool. anche questo sta riportando il messaggio che ho inserito nella domanda. quei dannati cambiamenti non vengono semplicemente commessi. Ho passato tutto il giorno a leggere tutorial e doc cercando di trovare qualcosa da provare. – deepblue

+1

È necessario ripetere 'git add' se si apportano modifiche che si desidera includere nel commit. Se esegui 'git status', quindi' git add .' e poi 'git status', dovresti vedere una differenza. – mlibby

+0

E "apporta le modifiche" includo le modifiche ai file, rinominando i file, eliminando file, aggiungendo file ... tutto ciò che potrebbe confondere git. – mlibby

1

Un'altra cosa da notare, git add aggiunge il contenuto di tali file all'indice nel momento in cui viene eseguito. Se esegui git add e poi cambi i file, le nuove modifiche non verranno visualizzate nell'indice.

+0

non è stato eseguito alcun lavoro aggiuntivo tra le chiamate "aggiungi" e "invia" – deepblue

0

Se si spostano i file in giro e utilizzare git add dopo, git aggiunge solo la nuova copia, ma non rimuove il vecchio:

$ git status 
# On branch master 
nothing to commit (working directory clean) 
$ mv from to 
$ git add . 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: to 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
$ git commit -m "..." 
$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Per rimuovere le vecchie copie si dovrebbe anche usare git rm:

$ git rm from 
rm 'from' 
$ git commit -m "..." 
$ git status 
# On branch master 
nothing to commit (working directory clean) 

Ma non vedo perché non consente di eseguire tali modifiche.

28

Risposta breve:

git push -u origin master

Longer risposta:

si è più probabile cercando di spingere impegna ad un ramo che non è stato ancora creato - per esempio, su un Github appena creato repository senza il file README creato automaticamente. Chiamando git push -u origin master, si specifica sia il telecomando che è necessario inviare a (origine, che di solito è il default di git) sia il ramo (master, anch'esso predefinito nei casi tipici). Secondo la documentazione git:

-u, --set-monte Per ogni tralcio che è fino a data o spinto con successo, aggiungere monte di riferimento (tracking), usato da git argomento-less -pull (1) e altri comandi. Per ulteriori informazioni su , vedere branch..merge in git-config (1).

Ciò significa che dopo una corsa di successo di questo comando, da allora in poi sarete in grado di utilizzare solo git push e git pull e questo verrà impostato a origin master (con qualche exceptions).

0

Ragazzi Ho avuto lo stesso problema con Git.
Sono in esecuzione Cygwin su Windows 8.

  1. controllo se avete la repository che si desidera impegnarsi a.
  2. controllo il percorso

$ git remote -v # questo è come si può visualizzare il proprio percorso

$ git remote set-url origin [email protected]:username/repos.git # questo è il modo di impostare nuovo percorso remoto per spingere i file al repository destra. $ git remote -v # per controllare se è stato impostato il percorso corretto.

  1. $ git add.

4.

$ git push origin master 

Spero che questo aiuti