Git diff между клонированным и оригинальным удаленным репозиторием

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

  • Как найти разницу между моим локальным репозитарием и исходным репозиторием github?
  • Как найти разницу между моей рабочей копией и исходным репозиторием github?
  • Как найти разницу между моим локальным репозиторием и другим репозиторием github того же проекта?

Ответ 1

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

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

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

git fetch foobar

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

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

git diff master foobar/master

Ответ 2

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

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

git diff HEAD...origin/master

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

git diff origin/master...HEAD

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

Ответ 3

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

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


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

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

Добавьте "другой репозиторий github того же кода" - мы называем это 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)

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

$ 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 нажмите, чтобы применить их к удаленному)

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

$ git diff origin/mybranch origin/master

Как мои локальные вещи отличаются от удаленной ведущей ветки?

$ git diff origin/master

Как мои вещи отличаются от другой вилки, главной ветвью одного и того же репо?

$git diff mybranch someOtherRepo/master