2011-10-04 10 views
5

Uno dei nostri sviluppatori continua a riscontrare problemi con i suoi repository Git. Lui tira e poi in seguito "git status" mostra un'intera lista di file non tracciati (cioè, Git pensa che siano nuovi) che in realtà proviene dalla sua ultima attrazione. Puoi effettivamente tornare indietro nel suo log git e specificare il commit specifico che li ha aggiunti ed è nella sua cronologia. Tuttavia, se vai su uno dei file ora non tracciati e fai un log git su di esso, non c'è nessuna storia.Git dovrebbe mai pensare che un file estratto da un pull non sia ora tracciabile?

Sono assolutamente disorientato. Tutti nel gruppo, incluso me, sono nuovi a Git, quindi non posso escludere che possa commettere un errore da qualche parte, ma sembra improbabile. È come se il suo repository continuasse a diventare corrotto.

Sta usando msysgit 1.7.6 e Tortoise Git 1.7.3. Stavamo usando eGit con myEclipse per un po 'e si è schiantato ripetutamente, così i primi problemi sono stati tutti incolpati di quello. Ora, penso che nessuno lo stia usando più, quindi non mi sento più in grado di incolpare eGit.

Ho bisogno dell'aiuto dei guru Git di Stack Overflow! Che cosa potrebbe causare questo? C'è qualche circostanza in base alla quale ciò sarebbe normale?

Per richiesta, qui è il file .git/config per il repository che è diventato corrotto:

[core] 
    repositoryformatversion = 0 
    filemode = false 
    bare = false 
    logallrefupdates = true 
    symlinks = false 
    ignorecase = true 
    hideDotFiles = dotGitOnly 
[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    url = G:\\DotcomB 
    puttykeyfile = 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[user] 
    name = jsmith 
    email = [email protected] 
+1

Potrebbe fornire ulteriori informazioni? Cosa c'è nel file .git/config dell'utente nella cartella del progetto? Sapete quali comandi Git vengono eseguiti ('git pull' o' git pull origin master 'sono i più comuni). Gli altri utenti del gruppo hanno riprodotto i passaggi esatti con risultati diversi? Esiste una directory .git nella cartella del progetto e nessun'altra sottocartella? –

+1

Questo è un caso, dove in qualche modo il caso è diverso, un po 'come in http://stackoverflow.com/questions/52950/how-to-make-git-ignore-changes-in-case? (qual è il valore di 'git config core.ignorecase'? Dovrebbe essere vero per impostazione predefinita, ma se è falso ... potrebbe spiegarlo. – VonC

+1

Inoltre, hai usato' git log - untracked_file' per controllare il log? – manojlds

risposta

0

Non abbiamo mai fatto "risolvere" questo problema. Tuttavia, abbiamo smesso di utilizzare una directory remota per archiviare i repository condivisi. Non ha mai funzionato bene, stava usando Novell o qualche soluzione di rete Windows che era lenta come diamine, e abbiamo visto regolarmente problemi di un tipo o dell'altro.

Ora, non posso dimostrare che la configurazione insolita è stata la causa di tutti i nostri problemi, ma , io impostazione GitBlit come un server Git potremmo parlare, invece. Dopo che l'ho fatto, ogni azione che abbiamo fatto con il server è stata letteralmente un ordine di grandezza più veloce e non abbiamo mai più visto il problema della corruzione.

2

vedere se la variabile d'ambiente git-dir è stata modificata. Allo stesso modo la variabile dell'albero di lavoro. Vedi anche se sei effettivamente nella stessa directory che pensi. Stai usando il tortoisegit e quella potrebbe essere una directory diversa che stai guardando vs la riga di comando.

Inoltre, quando si esegue il CD sul file per vedere se è presente, assicurarsi di aver completato i nomi delle directory in quanto msysgit è felice di trattare il file/directory indipendentemente dall'involucro. Git, comunque importa.

mydir/somefile 

può essere raggiunto in

cd MYDIR 

e il percorso sarà riflettere.

Ora lo stato di git mostrerà che c'è un file che non è tracciabile perché git vedrà mydir/somefile come qualcosa di diverso da MYDIR/somefile. A volte è difficile da vedere perché basta una differenza tra maiuscole e minuscole nell'intero percorso verso un file per ottenere questo comportamento.

Attendere ora la riga di comando per risolvere il problema. Rimbalzare tra il tortoisegit e la linea di comando non poteva aiutare la situazione.

È possibile avviare un nuovo repository e vedere se è possibile riprodurlo da solo sulla riga di comando?

Spero che questo aiuti,

Adam

+0

Sono totalmente d'accordo con te riguardo l'impostazione di default. I miei colleghi stanno soffrendo ... –

+0

Posso sicuramente vedere come ciò provocherebbe pensare che i file recuperati tramite un pull fossero "cambiati" anche quando non erano stati toccati, ma sarebbe stato davvero pazzo per Git pensare che i file fossero nuovo e non tracciato? Dovrebbe ancora sapere che il file è stato lì prima e da dove è arrivato. –

+0

Non riesco a capire come questo risponda alla domanda dell'OP per la sua situazione. Dove entra in scena 'untracked '? Dove non viene mostrato il file nel registro, entra in questa risposta? – manojlds

Problemi correlati