git diff между клонированным и оригинальным удаленным репозиторием - PullRequest
163 голосов
/ 02 марта 2011

Я клонировал репозиторий github и не вносил никаких изменений локально.Репозиторий Github переместился вперед с коммитами в той же ветке.

  1. Как найти разницу между моим локальным репозиторием и исходным репозиторием Github?
  2. Как найти разницу между моимрабочая копия и исходный репозиторий github?
  3. Как найти разницу между моим локальным репозиторием и другим репозиторием github того же проекта?

Ответы [ 3 ]

157 голосов
/ 02 марта 2011

1) Добавьте все удаленные репозитории, которые вы хотите сравнить:

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

2) Обновите локальную копию удаленного:

git fetch foobar

Извлечение не изменит вашу рабочую копию.

3) Сравните любую ветку из вашего локального репозитория с любым удаленным вами, добавленным:

git diff master foobar/master
45 голосов
/ 02 марта 2011

Еще один ответ на ваши вопросы (при условии, что вы работаете с мастером и уже сделали «git fetch origin», чтобы вы знали о удаленных изменениях в репо):

1) Выполняется в удаленной ветви с момента создания локальной ветви:

git diff HEAD...origin/master

2) Я предполагаю, что под "рабочей копией" вы подразумеваете локальную ветку с некоторыми локальными коммитами, которые еще не находятся на удаленном компьютере. Чтобы увидеть различия между тем, что у вас есть в вашей локальной ветке, но не существует в удаленной ветке, запустите:

git diff origin/master...HEAD

3) См. ответ от dbyrne.

19 голосов
/ 03 августа 2013

Этот пример может кому-то помочь:

Обратите внимание: «origin» - мой псевдоним для удаленного «Что на Github»
Примечание «mybranch» - мой псевдоним для моей ветки «Что такоеlocal ", который я синхронизирую с github
- ваше ветвление называется 'master', если вы его не создавали.Однако я использую другое имя mybranch, чтобы показать, где используется параметр имени ветви.


Что такое мои удаленные репозитории на github?

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

Добавить «другой репозиторий github с тем же кодом» - мы называем это форком:

$ 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)

убедитесь, что наше локальное репо обновлено:

$ git fetch

Измените некоторые вещи локально.скажем, файл ./foo/bar.py

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

Просмотрите мои незафиксированные изменения

$ 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.

Локальный коммит.

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

Теперь я другойчем мой пульт (на github)

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

Отличайтесь от него с помощью пульта - вашей вилки: (это часто делается с 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, чтобы применить их кremote)

Чем моя удаленная ветвь отличается от удаленной главной ветки?

$ git diff origin/mybranch origin/master

Чем моя локальная структура отличается от удаленной главной ветки?

$ git diff origin/master

Чем мои вещи отличаются от чужих форков, мастер веток того же репо?

$git diff mybranch someOtherRepo/master
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...