2008-11-03 7 views
8

J'ai du mal à comprendre certains concepts de git/DCVS. Voilà ce qui est arrivé:Git - Changement de branche (windows) & changement non-associé

  1. J'ai créé un projet git, et importé d'un repo SVN
  2. J'ai fait quelques commits
  3. que je voulais expérimenter quelque chose, donc je créé une branche appelée constantes de mise à jour
  4. je suis passé à constantes de mise à jour branche, déplacé des fichiers, d'autres supprimés et ajouté beaucoup d'autres
  5. je me suis engagé à cette branche
  6. Maintenant, j'essaie de passer à ma branche principale en utilisant git checkout master
  7. J'ai eu cette erreur: erreur: Vous avez des modifications locales à 'src/groovy/Constants.groovy'; ne peut pas changer de branche.

Ma compréhension de DCVS est que je peux changer de branches à volonté, même si une branche a plus ou moins de fichiers que les autres, tant que je commets mes fichiers. J'ai essayé de commettre avec git commit -a et en passant à la branche principale, mais j'ai la même erreur. En guise de remarque, quand je commets, git m'avertit que LF sera remplacé par CRLF et m'avertit aussi de certains espaces de fin; après je m'engage je fais un git status et un tas de fichiers apparaissent toujours comme #modified ....

Est-ce lié à git/windows, ou je ne comprends pas correctement ce qu'il est censé se passer? Je veux juste passer à ma branche principale sans perdre mes changements dans l'autre branche.

Répondre

4

Je résolu le problème hacking my pre-commit hook (commentant ces lignes .git/hooks/pre-commit avec un #):

#  if (/\s$/) { 
#  bad_line("trailing whitespace", $_); 
#  } 
4

Rechercher git-stash pour changer de branche alors qu'il y a des changements non sauvegardés dans la branche courante.

+0

J'ai déjà parlé de la cachette git, mais j'essaie d'utiliser le flux de travail par défaut (utilisez plutôt des branches). –

4

Vous avez raison de penser à comment cela devrait fonctionner. Cependant, il semble que git rencontre des problèmes avec les fins de ligne, et il pense que tous vos fichiers sont modifiés même s'ils ne le sont pas. Je n'utilise pas git sur Windows, mais j'allais suggérer l'option "core.autocrlf" pour que le traitement de crlf fonctionne. Cependant, l'entrée de blog suivant indique que cela pourrait ne pas être une bonne idée: http://weierophinney.net/matthew/archives/191-git-svn-Tip-dont-use-core.autocrlf.html

2

Il suffit d'utiliser l'option suivante dans Fichier .gitconfig qui réside dans votre répertoire d'utilisateurs.

[coeur] autocrlf = true

Et il résoudra la question.