Comment puis-je diff le même fichier entre deux différents s'engage sur la même branche?
Dans Git, comment pourrais-je comparer le même fichier entre deux commits (non contigus) sur la même branche (master par exemple)?
Je suis à la recherche de comparer fonctionnalité comme celle de Visual SourceSafe (VSS) ou Team Foundation Server (TFS). Est-il possible dans Git?
Vous devez vous connecter pour publier un commentaire.
De la
git-diff
man:Par exemple, pour voir la différence d'un fichier "main.c" entre maintenant et les deux s'engage en retour, voici trois commandes équivalentes:
..
n'est pas vraiment nécessaire, mais il va travailler avec elle (à l'exception assez anciennes versions, peut-être). Vous pouvez également utilisergit log
ougitk
pour trouver SHA1s à utiliser, si les deux s'engage à être très éloignés.gitk
a aussi un "diff sélectionné -> ce" et "diff this -> selected" dans son menu contextuel.--
est utile par exemple lorsque vous avez un fichier nommé-p
. Bon à utiliser dans les scripts, dans de rares cas seulement nécessaire dans la pratique.git diff master..HEAD -- $(find your_search_folder/ -name '*.c')
de comparaison pour tous les.c
les fichiers contenus dans un répertoire.HEAD^^^
syntaxe signifie "comparer à 3 pensions s'engage" il y, pas 3 de fichier "s'engage" à peine. Un chemin de ronde, c'est pour spécifier une date par exemplegit diff -w @{2016-01-01} filename
La-w
signifie ignorer les changements d'espaces.file.c
. Comment jugez-vous l'état actuel du fichier de l'état du même fichier dans la précédente livraison? (Je demande parce que les arguments de la commande s'attendre à<commit> <commit>
et pas<current changes yet to be committed> <commit>
)HEAD~2
ou même~
. Aussi, pourquoi nediff HEAD~2 HEAD~1
oudiff HEAD~3 HEAD~2
etc. retour sur rien??Vous pouvez également comparer deux fichiers différents dans deux révisions différentes, comme ceci:
git diff <revision_1>:<file_1> <revision_2>:<file_2>
<file_1>
et<file_2>
sont dans le répertoire courant, pas sur le niveau supérieur git géré répertoire, on doit ajouter./
sur Unix:<revision_1>:./filename_1
Si vous avez configuré le "difftool" vous pouvez utiliser
Exemple: en Comparant un fichier à partir de son dernier commit précédent s'engager sur la même branche:
En supposant que si vous êtes dans votre dossier racine du projet
Vous devez avoir les entrées suivantes dans votre ~/.gitconfig ou dans un projet/.git/config fichier. Installer le p4merge [C'est mon préféré de comparaison et de fusion de l'outil]
Vérifier
$ git log
, puis copiez SHA id de 2 différents s'engage et puis exécutezgit diff
de commande avec ces identifiants, par exemple:git diff (sha-id-one) (sha-id-two) -- filename.ext
sans le nom de fichier il va liste des diff de tous les fichiers de ces deux commits.Si vous voulez voir toutes les modifications apportées au fichier entre les deux s'engage sur un commit par commettre base, vous pouvez également faire
git log -u $start_commit..$end_commit -- path/to/file
Ici est un script perl qui permet d'afficher git diff commandes pour un fichier donné, comme l'a constaté dans un git log de commande.
par exemple
Rendements:
qui pourrait ensuite être découpées N collé dans une fenêtre shell de la session ou de canalisations à /bin/sh.
Notes:
Code:
Si vous avez plusieurs fichiers ou répertoires et souhaitez comparer les non continue s'engage, vous pourriez faire ceci:
Faire un temporelles de la branche
Rewind pour le premier commit cible
Cherry picking sur ceux qui commettent des intéressés
Appliquer diff
Lorsque vous avez fini d'
Si vous souhaitez faire un diff avec plus d'un fichier, avec la méthode spécifiée par @mipadi:
E. g. diff entre
HEAD
et votremaster
, pour trouver tous les.coffee
fichiers:Cette volonté de recherche de manière récursive votre
your_search_folder/
pour tous.coffee
de fichiers et de faire un diff entre eux et leursmaster
versions.Juste une autre façon d'utiliser git de l'awesomeness ...
difftool-file = "!git difftool HEAD@{\"$2\"} HEAD \"$1\" #"
Si vous voulez une simple comparaison visuelle sur Windows, telles que vous pouvez obtenir dans VSS ou TSF, essayez ceci:
Remarque: Après la mise à niveau vers Windows 10, j'ai perdu le git contexte options de menu. Cependant, vous pouvez obtenir la même chose en utilisant 'gitk" ou " gitk nom de fichier dans une fenêtre de commande.
Une fois que vous appelez "Git de l'Histoire", le Git GUI outil va commencer, avec un historique de la fiche dans la partie supérieure gauche du volet. Sélectionnez l'une des versions que vous voulez comparer. Puis cliquez-droit sur la deuxième version et choisir soit
Diff this -> selected
ou
Diff sélectionné -> ce
Des codes de couleur, des différences apparaissent dans le bas du volet de gauche.