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