2011-07-04 1 views
3

Dans un repo git, j'avais nouveau fichier ajouts, fichier suppression/renomme avec modifications comme d'habitude. Lorsque j'ai pris un git diff pour corriger une autre vue , je n'ai pas obtenu tous les fichiers nouveaux/supprimés. Ensuite, j'ai essayé avec --cached option, puis, j'ai eu un ensemble de fichiers différents, mais encore, pas l'ensemble complet de tous les changements + ajouts et suppressions de fichiers. (j'avais fait un git add et git rm) J'ai également essayé --diff-filter=ACDMRTUXB, n'a pas encore aidé! Ai-je manqué une autre option? tout ce que je veux, c'est obtenir l'ensemble des diffs en 1 commande. J'ai git version 1.6.2.4 sur ma machine Linux.Impossible d'obtenir correctif avec git

-

TIA

Répondre

3

Alors:

  • git diff montre les changements dans les fichiers Unstaged chenillés (vous avez ajouté le fichier à un moment donné, mais n'ont pas ajouté ces modifications spécifiques)
  • git diff --cached affiche les modifications par étapes (celles que vous avez déjà ajoutées)

Il semble que vous ayez un mélange de modifications par étapes et non mises en scène dans votre copie de travail. Si vous voulez les obtenir tous dans le même patch, vous pouvez:

  • désindexer vos modifications: git reset videra les changements mis en scène de votre index, mais les laisser dans votre copie de travail, de sorte git diff vous donnera la complète patcher maintenant
  • scène tous les changements: juste git add les fichiers restants à votre index: alors git diff --cached vous donnera le patch complet
+0

salut, est 'git reset' sans danger sur une vue de travail ?. Sur l'autre option, voulez-vous dire, faire un 'git add' sur les fichiers, même s'il n'y a que des modifications ?, ou plutôt un' git add' du répertoire supérieur? – vyom

+0

Tout d'abord, le comportement par défaut de 'git reset' est de réinitialiser l'index (donc git oublie quelle copie de travail vous avez déjà créée) mais ne touche pas la copie de travail elle-même. Donc, aucun fichier n'est affecté, ils apparaissent juste comme * modified * à nouveau quand vous exécutez 'git status'. Voir la [page de manuel] (http://www.kernel.org/pub/software/scm/git/docs/git-reset.html) pour les détails – Useless

+0

@vyom - Deuxièmement, je suppose que vous avez déjà exécuté ' git add' sur certains fichiers spécifiques, sinon vous n'auriez pas un mélange de modifications staged et non-staging. Dans le second cas ci-dessus, je suggère que vous ajoutiez les fichiers édités spécifiques qui ne sont pas déjà montés. J'ajoute rarement à partir du répertoire supérieur, car je peux avoir indésirable temporaire dans ma copie de travail qui ne devrait pas être versionnée. – Useless

Questions connexes