/ / Ottieni sempre il checkout error con submodule su GitHub Desktop su Windows - git, github, git-submodules

Ottieni sempre il checkout error con submodule su GitHub Desktop su Windows - git, github, git-submodules

Ho un repository con alcuni rami. Su uno di essi ho cancellato una directory, che in realtà non appartiene al repository e l'ho aggiunta come sottomodulo git.

Questo è ciò che faccio:

  1. Clona il repository
  2. Passa al ramo con il sottomodulo in GitHub Desktop
  3. git submodule init
  4. Fino ad ora posso cambiare i rami (tra quelli con il sottomodulo e senza sottomodulo senza problemi).
  5. git submodule update per ottenere finalmente il "contenuto" del sottomodulo

Quindi è tutto a posto finchè non provo a cambiare ramo in GitHub Desktop (in un altro ramo senza alcun sottomodulo git). In tal caso, ricevo un errore di verifica in cui dichiaro di avere modifiche non eseguite: GitHubCheckoutIssue

Impossibile controllare il ramo

I seguenti file nel tuo lavoro la directory verrebbe sovrascritta da un checkout: [...] Per favore, commetti le tue modifiche prima di poter cambiare ramo.

Comunque, come ho detto, non ho cambiato nulla - l'unica cosa che ho fatto è stata l'aggiornamento dei miei sottomoduli.

git status mostra tutto va bene:

$ git status
On branch patch-submodule
Your branch is up-to-date with "origin/patch-submodule".

nothing to commit, working directory clean

Quando io deinit i miei sottomoduli posso anche cambiare di nuovo i rami.

Quindi cosa c'è di sbagliato qui? E come posso evitare questo errore o aggirarlo?

risposte:

0 per risposta № 1

Hai detto che hai rimosso una directory dal repository e invece ne hai fatto un sottomodulo git.

Questa directory è stata rimossa dal brach che stai tentando di estrarre?

È probabile che il sottomodulo contenga uno degli stessi file contenuti nel ramo che si sta tentando di estrarre.

Si aggiorna il sottomodulo, che posiziona il filefile (s) sul tuo file system. Quando si tenta di eseguire il checkout del ramo, git tenta di sovrascrivere la versione del sottomodulo del file con la versione che è ancora contenuta nel repository principale su quel particolare ramo. Questo potrebbe / risulterebbe in un lavoro perduto, quindi git lancia l'errore.

Effettua un checkout pulito di quel ramo, quindi rimuovi i file e conferma le modifiche. È possibile aggiungere o unire anche le modifiche del sottomodulo a quel ramo.


0 per risposta № 2

Grazie al supporto di GitHub ho finalmente avuto una risposta molto utile.

Soprattutto loro mi hanno indirizzato a Sostituito il codice di terze parti con i sottomoduli git, ora non posso cambiare ramo che descrive esattamente il mio problema - tranne una differenza: ho usato la GUI GitHub e non la console.

E c'è collegato per git-scm dove questo è spiegato molto bene:

Commutazione rami con sottomoduli in loro puòanche essere difficile Se crei un nuovo ramo, aggiungi un sottomodulo e poi torni a un ramo senza quel sottomodulo, hai ancora la directory del sottomodulo come una directory non tracciata [.]

[...] Devi spostarlo o rimuoverlo, nel qual caso devi clonarlo di nuovo quando torni indietro e potresti perdere le modifiche locali o le diramazioni che non hai spinto verso l'alto.

Questo è fondamentalmente tutto ciò che questo messaggio di errore significava nel mio caso.