Как я могу видеть входящие коммиты в 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, чтобы видеть.