Git оформить заказ на коммит - PullRequest
1 голос
/ 14 февраля 2012

Когда я использую Git checkout master ~ X, я получу X-й слитый коммит, что я действительно хочу - это X-й реальный коммит (не только коммитные коммиты).

Как я могу это сделать?

Спасибо.

Ответы [ 3 ]

1 голос
/ 14 февраля 2012

Попробуйте что-то вроде следующего:

git checkout $(git log --no-merges --skip=2 -1 --format='%H')

Измените --skip=2 на количество коммитов без слияния, которые вы хотите пропустить. Если вы хотите первый коммит без слияния, используйте --skip=0; второй коммит без слияния, используйте --skip=1; третий, используйте --skip=2; и т.д.


Вы можете установить псевдоним (используя этот ответ в качестве руководства):

git config alias.co-non-merge '!git_co_non_merge() { git checkout `git log --no-merges --skip=$(($1 - 1)) -1 --format="%H"` ; } ; git_co_non_merge'

Добавьте --global, чтобы сделать глобальное изменение конфигурации. Тогда вы можете просто использовать git co-non-merge X.

0 голосов
/ 14 февраля 2012

Коммит слияния можно заменить на rebase.Проверьте это статья .Однако это влияет только на будущие ветви.

0 голосов
/ 14 февраля 2012

Вы можете получить список коммитов, которые не являются коммитами слияния, используя

git log --no-merges

. В этом списке просто возьмите X-й результат, чтобы выполнить checkout.

.В вашем случае дополнительно можно использовать флаг --online, так как короткого дисплея должно быть достаточно.

...