Использование Git как найти изменения между локальным и удаленным
здесь есть два разных вопроса, но я думаю, что они связаны.
при использовании Git, как я могу найти, какие изменения я совершил локально, но еще не нажал на удаленную ветку? Я ищу что-то похожее на Mercurial command
hg outgoing.при использовании Git, как я могу найти, какие изменения имеет удаленная ветвь до выполнения вытягивания? Я ищу что-то похожее на команду ртутный
hg incoming.
для второго: есть ли способ увидеть, что доступно, а затем вишневый выбор изменений, которые я хочу вытащить?
10 ответов:
Git не может отправлять такую информацию по сети, как Hg. Но вы можете запустить
git fetch(что больше похоже наhg pullчемhg fetch) для получения новых коммитов с удаленных серверов.Итак, если у вас есть ветка под названием
masterи пульт под названиемorigin, послеgit fetch, вы должны иметь ветку под названиемorigin/master. Затем вы можете получитьgit logиз всех коммитов этоmasterдолжен быть надмножествомorigin/masterделатьgit log master..origin/master. Инвертировать эти два, чтобы получить противоположность.мой друг, Дэвид Доллар, создал пару сценариев оболочки git для имитации
hg incoming/outgoing. Вы можете найти их по адресу http://github.com/ddollar/git-utils.
начиная с Git 1.7.0, существует специальный синтаксис, который позволяет вам в общем виде ссылаться на ветку вверх по течению:
@{u}или@{upstream}.передразнить
hg incoming:git log ..@{u}передразнить
hg outgoing:git log @{u}..Я использую следующие
incomingиoutgoingпсевдонимы, чтобы сделать выше проще в использовании:git config --global alias.incoming '!git remote update -p; git log ..@{u}' git config --global alias.outgoing 'log @{u}..'
не полный ответ, но git fetch будет тянуть удаленно и не слить. Затем вы можете сделать
git diff master origin/master
используйте " git log origin..Голова"
используйте "git fetch", а затем " git log HEAD..происхождение." Вы можете выбрать отдельные коммиты, используя перечисленные идентификаторы коммитов.
вышеизложенное предполагает, конечно, что "origin" - это имя вашей ветви удаленного отслеживания (что это, если вы использовали clone с параметрами по умолчанию).
есть также это, для сравнения всех ветвей:
git log --branches --not --remotes=originвот что говорит об этом страница git log man:
показывает все коммиты, которые находятся в любом из местные филиалы, но не в любом из них филиалы дистанционного отслеживания происхождения (то, что у вас есть, что происхождение не делает).
выше для
outgoing. Ибоincoming, просто поменять:git log --remotes=origin --not --branches
git-out - это скрипт, который эмулирует
hg outgoingдовольно точно. Он анализирует на выходе "push-n", поэтому он производит точный вывод, если вам нужно указать дополнительные аргументы для push.
git incoming
$ git fetch && git log ..origin/master --stat OR $ git fetch && git log ..origin/master --patchgit исходящий
$ git fetch && git log origin/master.. --stat OR $ git fetch && git log origin/master.. --patch
когда в "журнале Git" и @{у} ответы изначально дал мне "неизвестная редакция" ошибки, я пробовал Крис/предложения от romkyns
git push --dry-run.вы получите такой вывод, как " 5905..4878 мастер->мастер". 5905-это последняя фиксация, которую имеет пульт дистанционного управления, и фиксация через (и включая) 4878 будет применена к удаленному устройству.
затем вы можете использовать 5905..4878 в качестве аргументов для нескольких других команд git, чтобы получить более подробную информацию:
git diff 5905..4878 # Gives full code changes in diff style git log --online 5905..4878 # Displays each commit's comment
когда вы делаете git fetch, все содержимое,включая ветви, теги ( ссылки) временно сохраняются .git/FETCH_HEAD, содержимое которого можно просмотреть с помощью команды: ГИТ FETCH_HEAD журнала Если вы не используете суффикс-a с git fetch, то по умолчанию содержимое FETCH_HEAD будет перезаписано новым содержимым. Из этого содержимого вы можете просмотреть и решить, в какую ветвь вы хотите объединить их, если вы это сделаете, или вы можете просто выбрать вишню, если вы хотите только несколько коммитов из того, что было принесено привести.
Comments