2010-07-30 9 views
5

J'ai un fichier texte (.yml) dans lequel je saisis certains textes pour mon utilisation du système. Mais maintenant nous devons savoir quelles nouvelles lignes à la fois. J'ai pensé utiliser git pour résoudre notre problème, mais je ne peux pas trouver une commande clarifiée pour le faire.Utilisation de git diff dans le même fichier entre le premier et le dernier commit

Est-ce possible?

+0

double possible de [Git: comment diff le même fichier entre deux commits différents sur la même branche] (http://stackoverflow.com/questions/3338126/git -how-to-diff-the-same-file-between-two-different-commits-sur-la-même-branche) –

Répondre

11

Vous pouvez obtenir une liste des commits withs quelque chose comme ceci:

git log --abbrev-commit --pretty=oneline

qui devrait quelque chose comme ceci:

commitD Description 
commitC Description 
commitB Description 
commitA Description 

Choisissez vos deux commits et les remplacer ci-dessous:

git diff <commitA>..<commitB> -- /path/to/file

+0

a résolu mon problème, thnx! –

3

Vous pouvez le faire avec une ligne de commande:

git diff -w `git rev-list HEAD --reverse | head -1`..HEAD -- <path/file> 

Il ne fonctionne pas à utiliser --reverse avec un compte de 1 (-1/--max-count 1) ... car il renverse la liste des résultats après l'avoir tronqué. Donc soit vous utilisez --reverse avec la commande head ou vous utilisez tail -1.

Je devais ajouter le -w pour mon utilisation à cause des commutateurs en fin de ligne et de l'utilisation des tabulations et des espaces.

Cela peut ne pas fonctionner comme prévu si le fichier n'a pas été ajouté lors de la première validation! Vous pouvez changer la ligne ci-dessus pour:

git diff -w `git rev-list HEAD --reverse -- <path/file> | head -1`..HEAD -- <path/file> 
Questions connexes