Je veux trouver les différences entre un fichier que j'ai dans mon dépôt local et ce qui se trouve dans le origin master
.
Je sais qu'il y en a git diff
, mais je veux juste l'isoler jusqu'à ce fichier en particulier.
Pour simplifier, disons que le fichier est nommé file1.txt
et qu'il a un chemin de fichier local = [local_path]
et à l'origine, il a filepath = [remote-path]
.
Quelle serait la commande git que je dois taper?
EDIT: Merci à tous pour votre contribution, il a été très perspicace. Pour ceux qui utilisent Eclipse (ce que je suis et j'aurais dû dire plus tôt), je viens de découvrir que vous pouvez simplement faire un clic droit -> Comparer avec -> Branche, Tag ou Référence -> sélectionner la version appropriée et le tour est joué.
Réponses:
Si
[remote-path]
et[local-path]
sont les mêmes, vous pouvez faireRemarque 1: La deuxième commande ci-dessus sera comparée à la branche de suivi à distance stockée localement. La commande fetch est requise pour mettre à jour la branche de suivi à distance afin qu'elle soit synchronisée avec le contenu du serveur distant. Alternativement, vous pouvez simplement faire
Remarque 2:
master
peut être remplacé dans les exemples ci-dessus par n'importe quel nom de branchela source
git diff master:README.md -- README.md
git diff origin/master -- README.md
git fetch master
place d'occasiongit fetch .
(origine / master ne fonctionnait pas non plus) Mais le reste fonctionnait bien.git fetch **origin**
.Pour afficher les différences entre le fichier distant et le fichier local:
Pour voir les différences dans l'autre sens:
En gros, vous pouvez comparer deux fichiers n'importe où en utilisant cette notation:
Comme d'habitude,
ref1
ilref2
peut s'agir de noms de branche, de nom distant / nom de branche, de SHA de validation, etc.la source
Pour comparer un référentiel local avec un référentiel distant, utilisez simplement la syntaxe ci-dessous:
la source
Pour cela, j'ai écrit un script bash:
Dans le script ci-dessus, je récupère la branche principale distante (pas nécessairement sa branche principale ANY)
FETCH_HEAD
, puis je fais une liste de mon fichier modifié uniquement et je compare les fichiers modifiés àgit difftool
.Il y en a beaucoup
difftool
pris en charge par git, j'ai configuréMeld Diff Viewer
pour une bonne comparaison GUI.À partir du script ci-dessus, j'ai une connaissance préalable des changements effectués par d'autres équipes dans le même fichier, avant de suivre les étapes git
untrack-->staged-->commit
qui m'aident à éviter de résoudre les conflits de fusion inutiles avec l'équipe distante ou de créer une nouvelle branche locale et de comparer et de fusionner sur la branche principale.la source
J'ai essayé quelques solutions, mais j'ai une solution simple comme celle-ci (vous êtes dans le dossier local):
Ensuite, vous avez comparé le dernier numéro de commit de git local et de git distant ...
la source
La réponse complète à la question d'origine qui parlait d'un possible chemin différent sur local et distant est ci-dessous
git fetch origin
git diff master -- [local-path] origin/master -- [remote-path]
En supposant que le chemin local est docs / file1.txt et que le chemin distant est docs2 / file1.txt, utilisez
git diff master -- docs/file1.txt origin/master -- docs2/file1.txt
Ceci est adapté de la page d'aide GitHub ici et de la réponse Code-Apprentice ci - dessus
la source