Cambia la posizione della directory del repository Git.


200

Con Git / Github per Windows, se ho un repository con questa directory C:\dir1\dir2:, cosa devo fare per spostare i file repo C:\dir1? Posso ovviamente copiare e incollare fisicamente i file, ma cosa devo fare sul lato Git?

Ho questo repository su GitHub e utilizzo Git Bash e GitHub per Windows.


1
Guarda questa risposta , è lo stesso per passare a un'altra cartella o un altro computer.
venerdì

Risposte:


234

Basta copiare l'intero contenuto della directory di lavoro (inclusa la .gitdirectory nascosta ). Ciò sposterà l'intera directory di lavoro nella nuova directory e non influirà sul repository remoto su GitHub.

Se stai usando GitHub per Windows, puoi spostare il repository usando il metodo come sopra. Tuttavia, quando si fa clic sul repository nell'applicazione, non sarà possibile trovarlo. Per risolvere questo problema, fai semplicemente clic sul cerchio blu con!, Seleziona Trova e quindi passa alla nuova directory.


3
Ma come su come GitHub per Windows tiene traccia del repository locale? Ci dev'essere una configurazione in tal senso.

3
Quando l'ho fatto su Windows mi ha costretto a creare un nuovo repository.
472084,

1
@Jleagle, potrebbero averlo cambiato da quando questa risposta è stata pubblicata. Dare un'occhiata e aggiornare la mia risposta, se necessario.
ctor

2
Non dovrebbe chiederti di creare un nuovo repository: se ciò accadesse, ovviamente ti sei perso un file git (forse nascosto). Mi è successo e quando ho provato di nuovo ho notato che me ne ero perso un po '.
Juan,

1
Sono su Win. Dopo aver spostato manualmente la cartella in una nuova posizione, ho riaperto l'app GUI di Git e ho spostato manualmente la cartella del progetto anche lì. In questo modo funziona per me.
kuncevic.dev,

42

Non sono sicuro della domanda, quindi ecco due risposte:

Se si desidera spostare il repository:

Basta copiare l'intero repository (con la sua .gitdirectory).

Non esiste un percorso assoluto nella .gitstruttura e nulla impedisce che venga spostato, quindi non hai nulla da fare dopo lo spostamento. Tutti i collegamenti a github (vedi in .git/config) funzioneranno come prima.

Se si desidera spostare i file all'interno del repository:

Basta spostare i file. Quindi aggiungere le modifiche elencate in git status. Il prossimo commitfarà il necessario. Sarai felice di apprendere che nessun file verrà duplicato: spostare un file in git è quasi gratuito.


1
Ma come su come GitHub per Windows tiene traccia del repository locale? Ci dev'essere una configurazione in tal senso.

@ user596075 è nella .gitdirectory.
OrangeDog,

24

Se stai utilizzando GitHub Desktop, procedi nel seguente modo:

  1. Chiudi GitHub Desktope tutte le altre applicazioni con file aperti nel percorso della directory corrente.
  2. Spostare l'intera directory come indicato sopra nella nuova posizione della directory.
  3. Aprire GitHub Desktope fare clic sull'icona blu (!) "Repository not found". Quindi si aprirà una finestra di dialogo e vedrai un pulsante "Trova ..." che aprirà un popup che ti consentirà di indirizzare il suo percorso verso una nuova posizione.

8

Mentre la domanda riguarda Git per Windows, questo sembra essere il risultato migliore anche quando si cerca Visual Studio Tools For Git (estensione in VS 2012, supporto nativo in VS 2013).

Usando le soluzioni sopra come guida ho stabilito che Visual Studio Git Tools rende molto semplice lo spostamento dei repository (o persino l'intera struttura di directory per tutti i repository) localmente.

1) Chiudi Visual Studio. 2) Spostare le cartelle Repo nella nuova posizione. 3) Apri Visual Studio. Apri Team Explorer. Passa alla vista "Connetti" (icona della spina in alto). 3a) Se Repos mostra ancora il vecchio percorso, fai clic su Aggiorna per forzare un aggiornamento. 4) I repository che sono stati spostati localmente non dovrebbero più essere visualizzati in " Repository Git locali ". 5) Fare clic su Aggiungi (non nuovo o clone) e selezionare la cartella repository da aggiungere.

Nel passaggio 5 stai semplicemente fornendo un percorso di ricerca e la ricerca include automaticamente tutte le sottocartelle. Se hai più repository organizzati in un'unica radice (repository indipendenti che hanno solo la stessa cartella principale), selezionando il genitore verranno inclusi tutti i repository trovati di seguito.

Esempio: E: \ Repos \ RepoA E: \ Repos \ RepoB E: \ Repos \ RepoC

In Visual Studio Team Explorer [Aggiungi]> "E: \ Repos \"> [Aggiungi] restituirà tutti e tre i repository locali.


6

Anche se le risposte precedenti sembrano dire che puoi semplicemente spostare la directory e non ci sono percorsi assoluti nella struttura .git. Ho trovato questo falso quando si utilizza git da Cygwin.

Quando ho spostato il mio repository git (in effetti l'ho ripristinato da un backup, ma su un'unità diversa quando la struttura della mia unità è cambiata sul mio nuovo sistema). Ho ricevuto un messaggio di errore del tipo

fatal: Invalid path '<part_of_the_original_repo_path>': No such file or directory

Ho usato grep per scoprire che nel mio file .git / config nella sezione [core] c'è una variabile worktree che contiene il percorso assoluto del mio repository git. La modifica di questo ha risolto il problema per me.


4

Uso il plugin git di Visual Studio e ho alcuni siti Web in esecuzione su IIS che volevo spostare. Un modo semplice che ha funzionato per me:

  1. Chiudi Visual Studio.

  2. Sposta il codice (inclusa la cartella git, ecc.)

  3. Fare clic sul file della soluzione dalla nuova posizione

Questo aggiorna la mappatura nella nuova posizione, usando i file git locali esistenti che sono stati spostati. Una volta tornato in Visual Studio, la finestra di Team Explorer mostrava i repository nella nuova posizione.


2

Uso Github Desktop per Windows e volevo spostare la posizione di un repository. Nessun problema se sposti la tua directory e scegli la nuova posizione nel software. Ma se si imposta una directory errata, si ottiene un errore irreversibile e nessuna seconda possibilità di passare a quella valida. Quindi per ripararlo. È necessario copiare i file di progetto nella directory errata, riconfigurarli da Github Desktop, dopodiché è possibile spostare nuovamente il progetto in un'altra cartella e riposizionare il software. Non è necessario chiudere Github Desktop per questo, controllerà le cartelle in diretta.

Sperando che questo possa aiutare qualcuno.


1

Questo non ha funzionato per me. Ho spostato un repository da (ad esempio) c: \ project1 \ in c: \ repo \ project1 \ e Git per Windows non mostra alcuna modifica.

Lo stato git mostra un errore perché uno dei sottomoduli "non è un repository git" e mostra il vecchio percorso. ad es. (nomi modificati per proteggere l'IP)

fatale: non un repository git: C: /project1/.git/modules/subproject/subproject2 fatale: 'git status --porcelain' non è riuscito nel sottoprogetto sottomodulo

Ho dovuto modificare manualmente i file .git nei sottomoduli per puntare al percorso relativo corretto al repository del sottomodulo (nella directory .git / modules del repository principale)


1

Rapporto dal futuro: aprile 2018.

Volevo normalizzare i miei repository locali sul mio Mac e Windows, che erano finiti in diverse cartelle locali.

Il client Windows 10 mi ha fatto passare attraverso la routine "Impossibile trovare"> "Individua", noiosa ma non terribile. È inoltre necessario aggiornare il "percorso clone" locale in Opzioni per uso futuro.

Quando ho consolidato le cartelle mac, il client Github le ha appena trovate di nuovo: non ho dovuto fare nulla!


0

Per impostare il percorso locale predefinito per i tuoi repository ogni volta che clonali uno di essi, devi solo clonare un repository una volta e impostare Localpath: / your-path, quindi github rileva automaticamente quel percorso come predefinito.


Questo non sembra rispondere alla domanda originale - forse puoi chiarire come la tua risposta aggiunge qualcosa alla risposta già accettata? Grazie.
rwp,

0

Un approccio più basato su Git sarebbe quello di apportare le modifiche alla copia locale usando cdo copia e incolla e quindi spingendo queste modifiche dal repository locale a quello remoto.

Se si tenta di controllare lo stato del repository locale, è possibile che vengano visualizzate "modifiche non monitorate" che sono in realtà i file trasferiti. Per forzare queste modifiche con forza, è necessario mettere in scena questi file / directory usando

$ git add -A
#And commiting them
$ git commit -m "Relocating image demo files"
#And finally, push
$ git push -u local_repo -f HEAD:master

Spero che sia d'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.