Как я могу увидеть diff
между локальной ветвью и удаленной ветвью?
Как сравнить локальную ветку git с ее удаленной веткой?
Ответ 1
Чтобы обновить ветки удаленного отслеживания, вам нужно сначала git fetch
а затем:
git diff <masterbranch_path> <remotebranch_path>
Вы можете использовать git branch -a
чтобы git branch -a
список всех ветвей (локальных и удаленных), а затем выбрать имя ветки из списка (просто удалите remote remotes/
из имени удаленной ветки).
Пример: git diff master origin/master
(где "master" - это локальная ветвь master, а "origin/master" - удаленная, а именно, источник и ветвь master.)
Ответ 2
git diff <local branch> <remote>/<remote branch>
Например git diff master origin/master
или git diff featureA origin/next
Конечно, для иметь указанную ветку удаленного отслеживания нужно сначала git fetch
; и вам нужно иметь последнюю информацию о ветких в удаленном репозитории.
Ответ 3
Первый тип
git branch -a
чтобы получить список доступных ветвей. На выходе вы можете увидеть что-то вроде
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
Тогда покажите diff
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
Ответ 4
Если вы находитесь в данной ветки, и хотите сравнить ее с восходящей веткой, которую вы отслеживаете, используйте
git diff @{upstream}
Предоставлено этот ответ, документация git для с указанием версий
<branchname>@{upstream}
, например.[email protected]{upstream}
,@{u}
Суффикс@{upstream}
к branchname (короткая форма<branchname>@{u}
) относится к ветвь, для которой ветвь, указаннаяbranchname
, настроена на top (с настройкамиbranch.<name>.remote
иbranch.<name>.merge
). Отсутствуетbranchname
по умолчанию для текущего.
Ответ 5
Я понимаю намного лучше вывод:
git diff <remote-tracking branch> <local branch>
который показывает мне, что будет удалено, и что будет добавлено, если я нажму локальную ветвь. Конечно, это одно и то же, просто обратное, но для меня более читаемо, и я более уверенно смотрю, что произойдет.
Ответ 6
Простой способ:
git fetch
git log -p HEAD..FETCH_HEAD
Сначала вы получите изменения с вашего пула по умолчанию (источник). Это будет создано автоматически при клонировании репо. Вы также можете быть явным: git fetch origin master
.
Затем git log используется для сравнения вашей текущей ветки с той, которую только что выбрали. (Опция -p
(генерировать патч) - это то, что показывает различия.)
Ответ 7
Пусть ваша рабочая ветка является разработкой и хочет различать локальную ветвь развития и ветку удаленного развития, в этом случае синтаксис должен быть похож на git diff remotes/origin/development..development
или
git fetch origin
git diff origin/development
Ответ 8
Вот как я это делаю.
#To update your local.
git fetch --all
это приведет к извлечению всего из пульта, поэтому, когда вы проверите различие, он сравнит разницу с удаленной ветвью.
#to list all branches
git branch -a
приведенная выше команда отобразит все ветки.
#to go to the branch you want to check difference
git checkout <branch_name>
#to check on which branch you are in, use
git branch
(or)
git status
Теперь вы можете проверить разницу следующим образом.
git diff origin/<branch_name>
это сравнит вашу локальную ветвь с удаленной ветвью
Ответ 9
tl; dr: git diff <local branch> <remote branch>
При использовании git на оболочке, мне нравится сначала ориентироваться, оглядываясь вокруг. Здесь команда показать все ветки
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
Здесь у меня есть две локальные ветки (my-branch
и master
) и 4 удаленных (some-branch
, some-other-branch
, master
и my-branch
).
Кроме того, звездочка рядом с my-branch
указывает на то, что я в данный момент нахожусь в этой ветке (вы также узнаете об этом, используя команду git status
которая выдаст: On branch my-branch.
).
Примечание: удаленные ветки в оболочке git bash показаны красным, а локальные - зеленым.
Если вы просто хотите показать удаленные ветки:
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
Чтобы показать только локальные ветки, у вас может возникнуть желание использовать git branch -l
но это совершенно другая команда. Для отображения локальных веток используйте git branch
без опций
$ git branch
* my-branch
master
Чтобы завершить обзор основных параметров ветки, есть --list
что вопреки тому, что вы могли бы ожидать, это разрешить фильтрацию. Используйте это с шаблоном как это:
$ git branch --list 'my*'
* my-branch
Вы также можете комбинировать --list
с опциями -a
и -r
но не забудьте соответствующим образом адаптировать свой шаблон (помните: удаленные ветки начинаются с "удаленных"). Пример:
# this will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
Документы: https://git-scm.com/docs/git-branch
Теперь вы можете сравнить любые две ветки из всех доступных (вы также можете сравнить два локальных или два удаленных).
Здесь я сравниваю локальное с удаленной my-branch
, они синхронизируются, поэтому я не получаю никакого вывода:
$ git diff my-branch remotes/origin/my-branch
Примечание: вы должны дать полные имена ветвей без кавычек.
Я также могу сравнить локальную my-branch
с удаленным master
. Здесь я получаю некоторый вывод, потому что удаленная my-branch
не была объединена с главной веткой.
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
Ответ 10
Вот краткий ответ, если вы сравниваете текущую ветку и то, что хотите git pull
.
git fetch
git diff FETCH_HEAD
Первая команда определит, какая удаленная ветвь соответствует вашей текущей ветке. Артефакт этого вычисления в ссылке FETCH_HEAD
. Затем вторая команда использует это сравнение ссылок в сравнении с тем, что у вашей текущей ветки.
Ответ 11
Если вы хотите увидеть разницу только в изменении имен файлов, используйте: git diff --name-status <remote-branch> <local-branch>
,
иначе это покажет все различия между двумя ветвями: git diff <remote-branch> <local-branch>
Ответ 12
Я знаю, что есть несколько ответов на этот вопрос, но при попытке большинства из них я получал странную ошибку.
В моем случае у меня есть второй удаленный вызов 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
Надеюсь, что эта проблема поможет другим.
Ответ 13
git difftool <commit> .
Это позволит сравнить фиксацию, которую вы хотите, с локальными файлами. Не забудьте точку в конце (для локального).
Например, чтобы сравнить ваши локальные файлы с некоторыми commit:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.
(и вам не нужно git fetch, если не требуется сравнение с новыми коммитами)
Ответ 14
Пример
git diff 'master' 'testlocalBranch'
Если вы используете редактор, например webstorm, вы можете щелкнуть правой кнопкой мыши по файлу, чтобы сравнить его с веткой, и набрать/выбрать ветку.
Ответ 15
Настроить
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
Ответ 16
Интересно, есть ли какие-либо изменения в моей основной ветке...
- Во-первых, вам нужно сменить ветку (если вы уже находитесь под этой веткой, вам не нужно это делать!)
мастер проверки
- Вы можете увидеть, какой файл был изменен в вашей главной ветке с помощью этой команды
мерзавец статус
- Перечислите ветки
Git Branch -a
- мастер
пультов ДУ/происхождение/мастер
- Найти различия
git diff origin/master
Ответ 17
Это довольно просто. Вы можете использовать: git diff remote/my_topic_branch my_topic_branch
Где my_topic_branch
- ваша ветка.
Ответ 18
Если вы используете TortoiseGit (он предоставляет графический интерфейс для Git), вы можете щелкнуть правой кнопкой мыши по своей папке Git-репозитория и выбрать Git Sync
.
Вы можете выбрать свои ветки для сравнения, если не выбран. Чем вы можете просмотреть различия совершать. Вы также можете щелкнуть правой кнопкой мыши любой коммит, затем Compare with previous revision
чтобы просмотреть различия между собой.
Ответ 19
Допустим, вы уже настроили свой origin
в качестве удаленного хранилища. Затем,
git diff <local branch> <origin>/<remote branch name>