2015-06-12 11 views
7

Ho un repository bitbucket, con la seguente struttura:Come aggiornare la directory in git

Directory-A-> 
    directory a 
    directory b 
    file a 
    file b 
    file c 

Ora voglio spostare file "b" e il file "C" a "directory" un

Quando lo faccio sul computer locale e lo commetto da git add. Ricevo il file b e il file c nella directory a, ma esistono ancora al di fuori di esso.

+0

Quando spostate i file, dovete 'aggiungere' i nuovi (nuova posizione) ma anche' rm' i vecchi (vecchia posizione). – Peque

+0

Ho centinaia di file e non voglio usare rm per ciascuno. –

+1

'git add --all' può aiutarti. – Peque

risposta

4

Quando lo faccio sul computer locale e lo commetto da git add. Ricevo il file b e il file c nella directory a, ma esistono ancora al di fuori di esso.

Questo è perché hai fatto un git add . in directory a invece di un git add -A . in Directory-A.

In primo luogo, è necessario essere in Directory-A (quello di root) quando si esegue la git add -A . (che è un git add -u + git add .) dalla cartella principale:

Directory-A-> <====== there: git add -A . 
    directory a 
    file b 
    file c 
    directory b 
    file a 

A 'git add -A .' in Directory-A rileverà la cancellazione di tali file in Directory-A e la loro aggiunta in directory a.

saperne di più visita "Difference between “git add -A” and “git add .":

4

Ecco un'alternativa migliore. Provare quanto segue:

git mv "file b" "file c" "directory a" 

seguito da:

git commit -am "hey I moved filed" 

Nota: ho usato solo la bandiera -am a scopo dimostrativo. Non è una buona pratica. Dovresti impegnare solo i file con le modifiche correlate che rendono il tuo repository mantenibile.

0

Io di solito fare in questo modo, credo che sia ancora più semplice e funzionerà per tutto il progetto:

  1. spostare fisicamente i file b e c nella directory un (utilizzando il file explorer o riga di comando).

  2. Esegui questo comando Git nel progetto:

    git add -u

    (verrà automaticamente rimuovere tutti i file cancellati dall'indice Git: da quando è stato spostato i file fisicamente Git li considererà 'cancellato' da vecchia posizione e creato quello nuovo)

  3. Ora aggiungere tutti i file modificati/creati a nuovo commit:

    git add .

  4. Commit modifiche come al solito:

    git commit -m "Moved files b and c into directory a"


Ecco più informazioni git add -u comando (-u è una scorciatoia per --update):

... rimuove così come modifica le voci dell'indice per abbinare l'albero di lavoro, ma non aggiunge nuovi file ... tutti monitorati i file in tutto l'albero di lavoro vengono aggiornati ...

Fonte: http://www.git-scm.com/docs/git-add (cercare --update sezione)

0

correzione rapida. Run:

git add -A :/ 
git status 

quindi assicurarsi che file solo si desidera aggiungere/cancellare/modificare sono state organizzate. Questo è molto importante. Se hai apportato involontariamente modifiche estranee, esegui git reset. Se sei sicuro di voler procedere, esegui git commit.

Senza -A, git add solo aggiunte e modifiche di file. Non cancellerà interi file, e le mosse diventeranno copie. git add -A elimina i file che non esistono più.

:/ è una scorciatoia che indica la radice del repository, anziché la directory corrente. Se la tua directory corrente è la radice del repository, puoi ometterlo.

Si noti che l'esecuzione di git add -A - in particolare nella radice di un repository - è generalmente considerata pericolosa. Non prendere l'abitudine di commettere ciecamente ogni cambiamento che hai fatto: solo mettere in scena quello che sai che vuoi cambiare. Tuttavia, quando si sposta un numero elevato di file, questa è una pratica utilità.

0

Questo dovrebbe funzionare.

git mv "presentare una" "directory" un/

git mv "file di b" "directory" un/

git commit -m "File A e B vengono spostati nella directory di un"

Happy Coding.

Problemi correlati