git supprime les espaces de fin dans les nouveaux fichiers avant de valider
Je sais que la suppression de fuite espace peut être fait avec un pre-commit hook. Je suis intéressé à le faire manuellement. J'ai lu la question ici:
Faire git supprimer automatiquement de fuite des espaces blancs avant de s'engager - Débordement de Pile
La réponse la plus proche de ce que je veux, c'est la "version automatique" de l'ntc2:
(export VISUAL=: && git -c apply.whitespace=fix add -ue .) && git checkout . && git reset
Cette commande fonctionne bien sauf qu'il semble être seulement pour les modifications sur les fichiers qui sont déjà dans le repo, pas de nouveaux fichiers. J'ai un tas de fichiers qui sont nouveaux, ce qui signifie qu'ils ne sont pas encore dans le repo. Je veux supprimer l'espace à partir de ces fichiers, donc j'ai essayé d'ajouter-Un à la place de u, mais qui n'a pas fait une différence.
source d'informationauteur loop
Vous devez vous connecter pour publier un commentaire.
Pour nettoyer manuellement les espaces de vos 3 derniers commits, vous pouvez le faire:
git rebase --whitespace=fix HEAD~3
Quand je travaille sur un sujet branche, j'ai suivi l'amont de la branche (généralement par la création de ce genre)
git checkout -b topic -t
Qui me permet de déposer le dernier argument de
git rebase
. Donc, une fois que je suis fait & prêt à fusionner, je peux nettoyer l'ensemble du sujet branche rapidement avec:git ws
# alias git rebase --espace=fixNoter que, contrairement à la HEAD~3 exemple, ce sera fait, rebase vos modifications sur l'amont de la succursale si elle a changé! (Mais c'est aussi ce que je veux, dans mon flux de travail.)
J'aime la réponse de Luc, à l'exception de la limite que vous devez spécifier manuellement la base de commettre, ou d'utiliser un rebase de style de flux de travail, où votre histoire est linéarisé. Je propose une modification qui n'a pas besoin d'un argument supplémentaire et de ne pas changer la topologie de votre commit graphique. Comme une commande shell:
Ou ~/.gitconfig alias:
Je préfère cela, car parfois, j'ai envie de rebase mes modifications, mais si je pense qu'il existe un conflit de fusion, je préfère de fusion, de sorte que les deux mon premier changement et la résolution des conflits sera enregistrée dans l'histoire. De cette façon, je peux plus tard deviner la résolution des conflits et de la refaire si nécessaire.
Étant donné que je n'ai pas toujours rebase, je préfère ne pas mélanger les espaces de fixation changement d'année de base; par conséquent, cette modification de la réponse de Luc.
En plus, j'ai activer le défaut pre-commit hook qui abandonne sur les espaces erreurs:
Cela donne le flux de travail suivant, que j'aime parce que c'est manuel, il suffit que je sais ce qu'il se passe mais automatisés assez de ne pas obtenir de la manière:
git commit --no-verify
à s'engager de toute façongit ws
utiliser l'alias de fixerRemarque sur l'utilisation de
--onto
: Il n'est pas nécessaire ici, mais je le trouve plus facile de raisonner sur la façon dont cela fonctionne de cette façon. Dans la version de Luc,HEAD~3
est le<upstream>
dans la page de man, alors que dans ma version<upstream>
conserve sa valeur par défaut du réel en amont de la direction générale. Vous vous retrouvez avec le même résultat, soit de façon si.Simple correctif
La commande que vous avez cité
fonctionne, vous devez d'abord ajouter les fichiers que vous voulez le fixer avec
git add -N <files you want to fix>
. Leadd -N
dit essentiellement que Git imaginez-vous en avais déjà commis vide versions des fichiers.Erreur vous avez reçu
Je ne comprends pas pourquoi vous obtenez
fatal: Empty patch. Aborted.
erreur avecadd -Ae
mais il ressemble à un bug, depuis que je fais de la plainegit add -A . && git diff --cached
montre que le patch ne devrait pas être vide.Mieux les espaces de fixateur
J'ai récemment mis à jour
ma réponse que vous avez lié à
avec une meilleure Git alias pour la fixation des espaces. Voici une réécriture de cet alias
à l'aide de
Luc rebase truc et
un moins redondants contrôle de flux:
Cela corrige les espaces dans l'index, tout en préservant l'index, et
en laissant l'arbre intact. Avec cet alias, vous pouvez le fixer sans version
les fichiers dans le repo avec
Mais, il gère aussi le cas le plus fréquent de la fixation d'espaces dans un
s'engager sur laquelle vous travaillez. C'est compliqué parce que ça fonctionne quand même
l'indice ou de l'arbre sont propres.
Si vous utilisez emacs, vous pouvez utiliser le bouton "M^x supprimer-fuite-espace" pour les supprimer avant d'enregistrer le fichier. (il peut être personnalisé dans votre .emacs aussi)
vi semble également permettre cela : http://vim.wikia.com/wiki/Remove_unwanted_spaces