Как я могу видеть входящие коммиты в git?
Возможный дубликат:
Использование Git как найти измененные файлы между локальным и удаленным
Как я могу видеть входящие коммиты в git? Или еще лучше, посмотрите, что я только git fetch
/git pull
ed?
Изменить: Чтобы прояснить вопрос: кто-то говорит мне, что, чтобы получить некоторые исправления, я должен извлечь из своего репозитория. Моя цель - посмотреть, каковы их изменения, прежде чем я их приму. git pull
автоматически объединяется, чего я не хочу. git fetch
будет захватывать их без слияния, но я не уверен, как посмотреть, что именно я просто втянул. Причина оригинальной фразы заключается в том, что я обычно использую Mercurial, где команда будет hg incoming <repo name here>
— который Git, кажется, не имеет аналога.
Ответы
Ответ 1
incoming
не является прямым сопоставлением в git, потому что вы можете (и я часто делаю) иметь несколько репозиций, из которых вы извлекаете, и каждое репо имеет несколько ветвей.
Если бы был эквивалент входящей команды hg, вероятно, это было бы так:
git fetch && git log ..origin/master
То есть, "возьмите все вещи из восходящего потока, а затем сравните мою текущую ветвь с ведущей ветвью вверх".
Аналогично, исходящий будет следующим:
git fetch && git log origin/master..
На практике я просто печатаю их вручную (хотя я создал псевдоним для одного из них), потому что легко иметь много отслеживаемых локальных веток и отслеживать множество удаленных веток и не беспокоить их вместе.
Ответ 2
Вы также можете быть заинтересованы в git whatchanged
, который дает хороший обзор изменений, внесенных в некоторый диапазон коммитов.
Если вы хотите просмотреть, что вы собираетесь извлечь, сначала сделайте git fetch
, который обновляет только локальные ветки отслеживания для удаленного репозитория (а не какие-либо ваши ветки), а затем используйте любую команду, которая показывает вам новые коммиты, которые вы собираетесь вытащить. Например:
git whatchanged ..origin
Это краткое описание для того, чтобы показать фиксации между "общим предком, где бы я ни был, и происхождение" через "происхождение".
Ответ 3
Вы можете изучить разницу между двумя репозиториями. Предположим, что у вас есть "главный хозяин" ветки и ветвь удаленного отслеживания "origin/master", где другие люди передают свой код, вы можете получить различную статистику о различиях двух ветвей:
git diff --summary master origin/master
git diff --stat master origin/master
git diff --numstat master origin/master
git diff --dirstat master origin/master
git diff --shortstat master origin/master
git diff --name-only master origin/master
git diff master origin/master
Ответ 4
Когда кто-то подскажет вам тянуть, они дадут вам URL-адрес репо и ветку (по умолчанию master
).
Я просто делал
git fetch URL branch
затем один (в порядке убывания предпочтения):
# note 3 dots in next 3 commands
gitk HEAD...FETCH_HEAD
# shows all commits on both sides since the "fork" point
gitk --cherry-pick HEAD...FETCH_HEAD
# as above but skips identical patches so you really see the differences
git log --graph --boundary --left-right --cherry-pick --decorate HEAD...FETCH_HEAD
# I have a nice alias for this; it the text mode eqvt of the above
Я также иногда использую "tig
", но эта конкретная usecase (видя обе стороны) плохо обслуживается tig
.
Однако, если вы переведете его до двух точек (что может более точно соответствовать вашему фактическому вопросу, хотя я по-прежнему предпочитаю 3-точечные версии), вы можете сделать
tig HEAD..FETCH_HEAD
Вот псевдонимы для удобства:
incoming = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate HEAD..FETCH_HEAD'
outgoing = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate FETCH_HEAD..HEAD'
Ответ 5
Нет таких вещей, как "входящие коммиты", которые пользователи фиксируют локально и нажимают на них. Я бы открыл gitx или gitk (который поставляется с git) и посмотрел, как выглядят репозитории... Я думаю, что это даст вам четкое представление.
используйте: gitk --all
, чтобы видеть.
Ответ 6
Взгляните на этот пост.
Он показывает вам использование новой функции, которая была введена в git версии 1.7
Использование git как найти изменения между локальными и удаленными устройствами