web-dev-qa-db-fra.com

git diff entre le référentiel distant cloné et d'origine

J'ai cloné un référentiel github et je n'ai apporté aucune modification localement. Le référentiel Github a été déplacé avec des validations sur la même branche.

  1. Comment trouver un diff entre mon référentiel local et le référentiel github d'origine?
  2. Comment trouver un diff entre ma copie de travail et le référentiel github d'origine?
  3. Comment trouver un diff entre mon référentiel local et un autre référentiel github du même projet?
165
Gemseeker

1) Ajoutez tous 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 changera pas votre copie de travail.

3) Comparez toutes les branches de votre référentiel local à celles que vous avez ajoutées:

git diff master foobar/master
157
dbyrne

Une autre réponse à vos questions (en supposant que vous soyez sur le maître et que vous avez déjà "git fetch Origin" pour vous tenir au courant des modifications à distance):

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

git diff HEAD...Origin/master

2) Je suppose que par "copie de travail", vous entendez votre branche locale avec des commits locaux qui ne sont pas encore distants. Pour voir les différences entre ce que vous avez sur votre branche locale mais cela n’existe pas sur une branche distante:

git diff Origin/master...HEAD

3) Voir le réponse par dbyrne.

46
Ruslan Kabalin

Cet exemple pourrait aider quelqu'un:

Remarque "Origin" est mon alias pour la télécommande "Ce qui est sur Github"
Remarque "mybranch" est mon alias pour ma branche "ce qui est local" que je synchronise avec github
- Le nom de votre branche est "maître" si vous n'en avez pas créé. Cependant, j'utilise le nom différent mybranch pour indiquer où le paramètre du nom de branche est utilisé.


Quels sont exactement mes dépôts à distance sur github?

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

Ajoutez les "autres dépôts github du même code" - nous appelons cela un fork:

$ git remote add someOtherRepo https://github.com/otherUser/Playground.git

$git remote -v
Origin  https://github.com/flipmcf/Playground.git (fetch)
Origin  https://github.com/flipmcf/Playground.git (Push)
someOtherRepo https://github.com/otherUser/Playground.git (Push)
someOtherRepo https://github.com/otherUser/Playground.git (fetch)

assurez-vous que notre rapport local est à jour:

$ git fetch

Changer des trucs localement. disons fichier ./foo/bar.py

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

Consultez mes modifications non validées

$ git diff mybranch
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 mybranch
# Your branch is ahead of 'Origin/mybranch' by 1 commit.
#
nothing to commit (working directory clean)

Diff this avec remote - votre fork: (souvent avec git diff master Origin)

$ git diff mybranch 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)

En quoi ma branche distante diffère-t-elle de la branche maître distante?

$ git diff Origin/mybranch Origin/master

Comment mes données locales diffèrent-elles de la branche maître distante?

$ git diff Origin/master

En quoi mes affaires diffèrent-elles de celles de quelqu'un d'autre, branche principale du même dépôt?

$git diff mybranch someOtherRepo/master
19
FlipMcF