"git fetch --depth" не уменьшает глубину полностью - PullRequest
0 голосов
/ 28 мая 2020

Я предположил, что «git fetch --depth = N» также может уменьшить неглубокую глубину клонирования. Я вижу это из документации git -fetch (« углубить или сократить историю до указанного количества коммитов ») или, например, на { ссылка }. Но я нашел случай, когда он не работает полностью!

(1) Очистить мелкий клон с глубиной 1:

$ git clone --depth 1 ssh://git@mygitserver/utest.git -b master utest
$ git rev-parse HEAD
407d1cd4147c242f5c1bd3d535fc3f50eeb5e6b3 // latest commit

// Action A (ask which branch contains an older commit) - FAILED:
$ git branch -a --contains 793a5879984f64a62c3d1dc9d047b873571dc103
error: no such commit 793a5879984f64a62c3d1dc9d047b873571dc103

// Action B (checkout an older commit) - FAILED:
$ git checkout -f 793a5879984f64a62c3d1dc9d047b873571dc103
fatal: reference is not a tree: 793a5879984f64a62c3d1dc9d047b873571dc103"

(2) Увеличить глубину до 3:

$ git fetch --depth 3

// Action A (ask which branch contains an older commit) - PASSED (shows all branches):
$ git branch -a --contains 793a5879984f64a62c3d1dc9d047b873571dc103
    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/master
// Action B (checkout an older commit) - PASSED:
$ git checkout -f 793a5879984f64a62c3d1dc9d047b873571dc103
HEAD is now at 793a587

(3) Вернуться на глубину 1:

$ git fetch --depth 1

// Action A (ask which branch contains an older commit) - FAILED (does not show master anymore!):
$ git branch -a --contains 793a5879984f64a62c3d1dc9d047b873571dc103
    * (HEAD detached at 793a587)
// Action B (checkout an older commit) - PASSED:
$ git checkout -f 793a5879984f64a62c3d1dc9d047b873571dc103
HEAD is now at 793a587

Я ожидаю, что "git fetch --depth 1" приведет к полному откату к состоянию (1), но это действительно так это частично. Это означает, что что-то осталось из глубины 3 внутри рабочего пространства.

Каков правильный способ достичь желаемого с помощью Git команд без клонирования с нуля?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...