Как сравнить локальную ветку git с ее удаленной веткой? - PullRequest
895 голосов
/ 26 ноября 2009

Как я могу увидеть diff между локальной веткой и удаленной веткой?

Ответы [ 17 ]

8 голосов
/ 02 ноября 2016

Если вы хотите увидеть разницу, так как меняются только имена файлов, используйте:

git diff --name-status <remote-branch> <local-branch>,

иначе это покажет все различия между двумя филиалы:

git diff <remote-branch> <local-branch>

6 голосов
/ 16 марта 2017

Я знаю, что уже есть несколько ответов на этот вопрос, но я получаю странную ошибку при попытке большинства из них.

В моем случае у меня есть второй пульт с именем heroku, который не origin, и, поскольку он не был синхронизирован, я получил эту ошибку при попытке запустить git diff master heroku/master:

fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.

или это при попытке другого подхода git diff master..heroku/master:

fatal: bad revision 'master..heroku/master'

Решением было явное упоминание удаленного имени на git fetch перед запуском git diff, в моем случае:

$ git fetch heroku
$ git diff master heroku/master

Надеюсь, что поможет другим с этой же проблемой.

4 голосов
/ 16 июля 2017
git difftool <commit> .

Это сравнит коммит вы хотите с вашими локальными файлами. Не забывайте точку в конце (для локального).

Например, чтобы сравнить ваши локальные файлы с некоторыми коммитами:

git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.

(и вам не нужен git fetch, если не требуется сравнение с новыми коммитами)

3 голосов
/ 14 апреля 2017

Пример

git diff 'master' 'testlocalBranch'

Если вы используете редактор, такой как веб-шторм, вы можете щелкнуть правой кнопкой мыши по файлу, выбрать сравнение с веткой и ввести / выбрать вашу ветку.

enter image description here

enter image description here

0 голосов
/ 22 ноября 2018

Это довольно просто. Вы можете использовать: git diff remote/my_topic_branch my_topic_branch

Где my_topic_branch - ветка вашей темы.

0 голосов
/ 02 сентября 2018

Интересно, есть ли какие-либо изменения в моей master ветке ...

  1. Во-первых, вам нужно сменить ветку (если вы уже находитесь под этой веткой, вам не нужно это делать!)

мастер проверки git

  1. С помощью этой команды вы можете увидеть, какой файл был изменен в вашей основной ветке

git status

  1. Список филиалов

git branch -a

  • мастер
    пульты дистанционного управления / происхождение / мастер
  1. Найди отличия

git diff origin / master

0 голосов
/ 07 мая 2018

Настройка

git config alias.udiff 'diff @{u}'

Diffing HEAD с HEAD @ {upstream}

git fetch  # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff

Diffing с произвольной удаленной ветвью

Это отвечает на вопрос в вашем заголовке («его удаленный»); если вы хотите использовать «удаленный» (который не настроен в качестве восходящего потока для ветви), вам нужно настроить его непосредственно. Вы можете увидеть все удаленные ветви со следующим:

git branch -r

Вы можете увидеть все настроенные пульты со следующим:

git remote show

Вы можете увидеть конфигурацию ветвления / отслеживания для одного пульта (например, источника) следующим образом:

git remote show origin

Как только вы определите подходящую ветку происхождения, просто выполните обычный diff:)

git diff [MY_LOCAL] MY_REMOTE_BRANCH

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