Git - Cambio di rami (windows) e amp; modifiche non impegnate
Domanda
Sto facendo fatica a capire alcuni concetti git / DCVS. Ecco cosa è successo:
- Ho creato un progetto git e l'ho importato da un repository SVN
- Ho effettuato alcuni commit
- Volevo sperimentare qualcosa, quindi ho creato un ramo chiamato constants-update
- Sono passato al ramo constants-update , ho spostato alcuni file, ne ho cancellati altri e ne ho aggiunti molti altri
- Mi sono impegnato in questo ramo
- Ora sto provando a passare al mio ramo principale usando
git checkout master
- Ho ricevuto questo errore: errore: hai apportato modifiche locali a "src / groovy / Constants.groovy"; impossibile cambiare ramo.
La mia comprensione di DCVS è che posso cambiare i rami a piacimento, anche se alcuni rami hanno più o meno file degli altri, purché esegua il commit dei miei file. Ho provato a eseguire il commit con git commit -a
e passando al ramo principale, ma ho lo stesso errore.
Come nota a margine, quando commetto git mi avverte che LF sarà sostituito da CRLF e mi avverte anche di alcuni spazi bianchi finali; dopo aver eseguito il commit faccio uno git status
e un mucchio di file appare sempre come #modified ...
.
È legato a git / windows o non capisco correttamente cosa dovrebbe succedere? Voglio solo passare al mio ramo principale senza perdere le mie modifiche nell'altro ramo.
Soluzione 3
Ho risolto il problema hacking my hook pre-commit (commentando queste righe in .git / hooks / pre-commit
con un #
):
# if (/\s$/) {
# bad_line("trailing whitespace", Ho risolto il problema hacking my hook pre-commit (commentando queste righe in .git / hooks / pre-commit
con un #
):
<*>);
# }
Altri suggerimenti
Cerca git-stash per cambiare i rami mentre ci sono cambiamenti non salvati nel ramo corrente.
Hai ragione nel pensare a come dovrebbe funzionare.
Tuttavia, sembra che git stia riscontrando problemi con i finali di riga e pensa che tutti i tuoi file vengano modificati anche quando non lo sono. Non uso git su Windows, ma stavo per suggerire " core.autocrlf " opzione per far funzionare la gestione crlf. Tuttavia, il seguente post di blog indica che questa potrebbe non essere una buona idea: http://weierophinney.net/matthew/archives/191-git-svn-Tip-dont-use-core.autocrlf.html
Basta usare la seguente opzione nel file .gitconfig che risiede nella directory degli utenti.
[core] autocrlf = true
E risolverà il problema.