166 votes

git diff entre le dépôt cloné et le dépôt distant original

J'ai cloné un dépôt github et n'ai fait aucun changement localement. Le dépôt Github a avancé avec des commits sur la même branche.

  1. Comment trouver une différence entre mon dépôt local et le dépôt github original ?
  2. Comment trouver une différence entre ma copie de travail et le dépôt github d'origine ?
  3. Comment trouver une différence entre mon dépôt local et un autre dépôt github du même projet ?

Merci !

159voto

dbyrne Points 18604

1) Ajoutez les référentiels distants que vous souhaitez comparer :

git remote add foobar git://github.com/user/foobar.git

2) Mettez à jour votre copie locale d'une télécommande :

git fetch foobar

Fetch ne modifiera pas votre copie de travail.

3) Comparez toute branche de votre dépôt local à toute branche distante que vous avez ajoutée :

git diff master foobar/master

46voto

Ruslan Kabalin Points 1550

Une autre réponse à vos questions (en supposant que vous êtes sur master et que vous avez déjà fait "git fetch origin" pour rendre votre repo conscient des changements à distance) :

1) Commits sur la branche distante depuis la création de la branche locale :

git diff HEAD...origin/master

2) Je suppose que par "copie de travail" vous voulez dire votre branche locale avec quelques commits locaux qui ne sont pas encore sur remote. Pour voir les différences entre ce que vous avez sur votre branche locale et ce qui n'existe pas sur la branche distante, exécutez :

git diff origin/master...HEAD

3) Voir le réponse par dbyrne.

20voto

FlipMcF Points 3577

Cet exemple pourrait aider quelqu'un :

Note " origin "est mon alias pour la télécommande "What is on Github".
Note " myfork "est mon alias pour ma branche "what is local" que je synchronise avec github.
--Vous verrez 'master' comme branche si vous travaillez à partir de la racine du dépôt.

git va définir ces éléments par défaut.


Que sont exactement mes dépôts distants sur github ?

$ git remote -v
origin  https://github.com/flipmcf/Playground.git (fetch)
origin  https://github.com/flipmcf/Playground.git (push)

s'assurer que notre dépôt local est à jour :

$ git fetch

Changez quelques trucs localement. Disons que le fichier ./foo/bar.py

$ git status
# On branch myfork
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   foo/bar.py

Revoir mes changements non engagés

$ git diff myfork
diff --git a/playground/foo/bar.py b/playground/foo/bar.py
index b4fb1be..516323b 100655
--- a/playground/foo/bar.py
+++ b/playground/foo/bar.py
@@ -1,27 +1,29 @@
- This line is wrong
+ This line is fixed now - yea!
+ And I added this line too.

S'engager localement.

$ git commit foo/bar.py -m"I changed stuff"
[myfork 9f31ff7] I changed stuff
1 files changed, 2 insertions(+), 1 deletions(-)

Maintenant, je suis différent de ma télécommande (sur github)

$ git status
# On branch myfork
# Your branch is ahead of 'origin/myfork' by 1 commit.
#
nothing to commit (working directory clean)

Diffusez ceci à distance - votre fourchette :

$ git diff myfork origin
diff --git a/playground/foo/bar.py b/playground/foo/bar.py
index 516323b..b4fb1be 100655
--- a/playground/foo/bar.py
+++ b/playground/foo/bar.py
@@ -1,27 +1,29 @@
- This line is wrong
+ This line is fixed now - yea!
+ And I added this line too.

(git push pour les appliquer à distance)


Et en plus :

Comment mon fork (révision actuelle sur github) diffère-t-il du master distant sur github ?

$ git diff origin/myfork origin/master

En quoi mon matériel local diffère-t-il du master sur github ?

$ git diff origin/master

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X