2017-10-10 4 views
0

Était nommé: UsrActivity.java maintenant nommé: ProfileActivity git diff ne montre pas qu'il est côte à côte diff fenêtre vue de Android Studio, à la place, il montre seul fichier de classe en cours.Comment comparer le même fichier avec un autre fichier de branche enregistré avec un nom différent

Comment comparer ProfileActivity.java de « OldBranch » avec UsrActivity.java de « DevBranch »

En bref, comment comparer deux fichiers indépendants dans la branche. Merci

Répondre

0

Mise à jour avec les informations fournies par torek; Je ne sais pas pourquoi il n'a pas affiché cela comme une réponse, parce que c'est un chemin beaucoup plus court que ce que j'avais esquissé; alors plutôt que de le laisser dans les commentaires, la voici:

git diff peut travailler sur des identifiants pour deux BLOB s, et un raccourci pour l'identification d'un BLOB est <commit>:<path>. donc

git diff master:UsrActivity.java branch:ProfileActivity.java 

(ajusté si nécessaire pour les chemins et l'identification de validation).


Réponse originale

Vous pouvez donner deux commits, mais seulement un chemin. Vous pouvez donner deux chemins, mais vous ne pouvez pas spécifier de validations. S'il y a un moyen de spécifier deux commits et un chemin différent pour chacun, je ne le sais pas ... Donc je pense que faire ce que vous voulez prend un peu plus de travail. Un moyen consiste à obtenir l'ID d'objet (SHA) pour chaque fichier. Pour un fichier-out est cochée, vous pourriez dire

git hash-object UsrActivity.java 

Pour obtenir l'a d'un objet qui n'est pas vérifié, vous pouvez faire quelque chose comme

git log -n1 -raw --no-abbrev <commit-or-branch-containing-file> -- ProfileActivity.java 

(Il existe des versions probablement plus simple de cela, je n'ai pas encore eu beaucoup de caféine ce matin.) Ou bien sûr vous pouvez consulter un commit qui a le 2ème fichier (ou juste vérifier ce fichier à partir d'un tel commit) et revenir à la commande git hash-object.

Une fois que vous avez un hachage pour chaque fichier, vous voulez juste dire

git diff <file-1-hash> <file-2-hash> 

Bien sûr, si vous finissez par vérifier les deux fichiers sur dans le worktree, alors vous pouvez simplement les diff directement

git diff UsrActivity.java ProfileActivity.java 
+0

Utilisez 'git rev-parse' pour transformer n'importe quel nom de spécificateur de commit arbitraire en plus du hash blob du fichier validé:' git rev-parse OldBranch: ProfileActivity.java' par exemple. Puis, puisque 'git diff ' fonctionne, ainsi 'git diff : : '. – torek