Как Джунио К. Хамано (главный сопровождающий Git) ставит его :
Не правило более или менее похоже:
Если история вашего неглубокого хранилища не проходит достаточно долго, а другой репозиторий раздвоен до вашей усеченной истории, вы не сможете вычислить общего предка, и вы не сможете вытолкнуть его.
Обновление 2014: см. « Является ли git clone --depth 1 (мелкий клон) более полезным, чем это делает? »: это ограничение будет быть поднятым с помощью Git 1.9!
Обновление 2015: с Git 2.5+ вы даже сможете получить одно коммит. См. «. Вытащите конкретную фиксацию из удаленного репозитория git »
Оригинальный ответ (август 2011):
Собственно, придите подумайте об этом, это намного сильнее, чем «невозможно вычислить общий».
История может выглядеть так:
R---R---R / --R---R---X---X---S---S---S
, где
S
- это фиксации, которые у вас есть в вашем мелком репозитории, аR
- это фиксации, которые существуют в репозитории, который получает ваш push. Поскольку ваша история неглубока, ни один репозиторий имеет [X
», которые являются коммитами, которые должны существовать, чтобы сохранить историю репозитория получателей; получатель не является мелким, и мы не хотим делать его мелким.Если вы клонировали мелко некоторое время назад, работали, не общавшись с другой стороной, пока другая сторона прогрессировала, И если прогресс другой стороны включал перемотку назад и усилие; перестроить историю, вы увидите аналогичную топологию. Самый левый «
S
» на приведенном выше рисунке, возможно, был концом ветки, когда вы клонировали с глубиной 1, и с тех пор удаленный конец мог отбросить три верхних конца и перестроить свою историю, которая ведет к самой правой "R
». В таком случае нажатие на пультHEAD
завершится ошибкой.Так что может работать в некотором случае, но он не поддерживается:
Если я должен что-то сказать об этом ...
- Я думаю, что «не поддерживается» - это лаконичный способ дать достаточно хорошую информацию, но он будет работать только для умных людей.
- Not все умны; попробуйте сами, посмотрите, что операция , по-видимому, работает для их ограниченного числа испытаний, и в заключение она будет работать большую часть времени. И они поздравляют свой собственный интеллект, говоря «большую часть времени», а не «всегда». И они расстраиваются, когда видят, что они не работают, хотя они были предупреждены.
Подробнее о процессе обновления мелкого клонирования см. « Как обновить мелкий клон git? ".
Если под author
вы имеете в виду автора коммита, который, я считаю, именно к этому вы стремитесь, вы захотите использовать Commits API . Теперь я до сих пор не знаю, нужен ли вам последний автор коммита для файла README.md
или просто для репо:
Вы захотите использовать список коммитов в репозитории конечной точки и на основе ваших требований вы можете сделать несколько фильтров запросов.
sha
по запросу, например, чтобы получить коммиты только на master
README.md
, то вы также Вы хотите использовать фильтр для path
Если вы хотите только master
коммитов для path
README.md
, то вы должны объединить оба. На этой конечной точке есть больше фильтров, поэтому я предлагаю вам внимательно прочитать, прежде чем пытаться снова.
Надеюсь, это поможет.