Ваша ветка опережает origin / master по X коммитам. Как найти X-коммиты?

Я проверял коммиты X с помощью следующей команды:

git log --author=<my-name> -<X>

Но проблема в том, что я случайно вытащил код из другого репозитория и добавил коммиты из репозитория в свой локальный репозиторий git.

Поэтому я не могу использовать указанную выше команду, поскольку новые коммиты содержат других авторов.


person Mohammed H    schedule 04.01.2013    source источник
comment
если ваша рабочая копия чистая (нет незафиксированных изменений), вы можете вернуться в состояние до извлечения с помощью stackoverflow.com/q/1223354/11343   -  person CharlesB    schedule 04.01.2013
comment
@CharlesB git reset --hard не перейдет в состояние до вытягивания. Сообщение все еще отправляется.   -  person Mohammed H    schedule 04.01.2013
comment
вам нужно найти хэш зафиксированной фиксации перед извлечением и передать его reset --hard, пожалуйста, прочтите вопрос, который я упомянул   -  person CharlesB    schedule 04.01.2013
comment
Что вы имеете в виду, когда X совершает количество коммитов, которые существуют локально, но не удаленно? Количество созданных вами коммитов? Вопрос относительно того, что вы ищете, немного двусмысленный.   -  person Maic López Sáenz    schedule 10.01.2013
comment
@LopSae - количество коммитов, которые существуют локально, но не удаленно.   -  person Mohammed H    schedule 10.01.2013


Ответы (5)


Команда

git log origin/master..master

показывает коммиты на master, но не на origin/master.

person tobiasbayer    schedule 04.01.2013
comment
Он не будет показывать коммиты. Он показывает, что некоторые коммиты существуют в моем локальном репозитории и в моем удаленном репозитории. - person Mohammed H; 04.01.2013
comment
Может, тогда я неправильно понял ваш вопрос ... - person tobiasbayer; 04.01.2013
comment
Принятие ответа на основании полученных голосов: D - person Mohammed H; 24.02.2018

Я создал псевдоним для этой команды, в котором перечислены еще не отправленные коммиты.

git log --branches --not --remotes --decorate --oneline

который представляет собой вариант команды cxreg, опубликованной в просмотре неопубликованных коммитов Git.

Множество других полезных способов разобрать дерево коммитов в этом посте.

person David Culp    schedule 05.01.2013

Обозначение treeish..treeish работает точно, чтобы увидеть коммиты, которые присутствуют во второй ссылке, но не в первой. Из справки журнала git:

Обычный D..M вычисляет набор коммитов, которые являются предками M, но исключает те, которые являются предками D. Это полезно, чтобы увидеть, что произошло с историей, ведущей к M с момента D, в том смысле, что «что делает У M есть то, чего не было в D ».

Используя это с git log или git show, вы можете вывести список, содержащий одну строку для каждой фиксации, представленной в D..M разнице:

git show -s --oneline branch..HEAD

or

git log --oneline branch..HEAD

Соедините это с количеством слов, и вы сможете вывести именно то количество коммитов, которое вы ищете:

git log --oneline branch..HEAD | wc -l
person Maic López Sáenz    schedule 10.01.2013
comment
Я пробовал вышеуказанные команды. Я вообще не получаю никаких результатов. - person Mohammed H; 11.01.2013
comment
Если вы не получаете никаких ошибок, а show/log, как указано выше, ничего не печатает, то это означает, что, если предположить, что A..B, B уже содержит все коммиты в A, и нет никаких коммитов для печати. Попробуйте инвертировать его или попробуйте с парой коммитов, в отличии которых вы уверены. Например, если вы попробуете это с HEAD^..HEAD, вы должны отобразить одну фиксацию. - person Maic López Sáenz; 11.01.2013
comment
Все вышеперечисленные комментарии сравниваются только с местным репо. как сравнить с удаленным репо? - person Mohammed H; 11.01.2013
comment
Используйте ссылку в формате remote/branch, как и origin/master. Если ваша локальная и удаленная ветки названы одинаково, а ваш удаленный - origin, вы можете сделать origin/branch..branch. Следуя тому, что вы описываете в вопросе, вы можете захотеть origin/master..HEAD. - person Maic López Sáenz; 11.01.2013

На этот вопрос уже дан ответ в другом посте:

git log origin/master..HEAD

(см. Просмотр неотмещенных коммитов Git)

person user1834095    schedule 08.08.2014

Я использую это:

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

Он показывает коммиты в виде графика со всеми ветвями и их именами.

Мой совет - создать для него псевдоним в ~ / .gitconfig.

person amorfis    schedule 04.01.2013
comment
Я думаю, что он содержит коммиты. Но он показывает слишком много информации. Как по нему определить X-коммиты? - person Mohammed H; 04.01.2013
comment
Вы, конечно, можете добавить к нему --author=<my-name> -<X>. Или это не то, что вы хотели? - person amorfis; 05.01.2013