git shallow clone since specific commit
Asked Answered
U

3

9

I'd like to clone a repository with a longish history. I'm only interested in a few short-lived not-yet-merged feature branches and master.

In order to not confuse myself with all that past history and merged branches, I'd like to do a shallow clone starting at a specific commit SHA.

However, so far I've only found documentation on how to do shallow clones that only include the last n commits (--depth) resp, the commits since a specific date (--shallow-since).

Is there a way to specify a shallow-clone starting at a given commit?

Undine answered 2/9, 2018 at 19:50 Comment(1)
Similar question: stackoverflow.com/questions/33612627Actinomorphic
T
5

There is not, which is kind of a shame since it would be easy for Git to implement.

Usually using --depth is sufficient: just start with a depth you think is enough, and if it's not, repeatedly fetch with --deepen or --depth as needed.

Tablespoon answered 2/9, 2018 at 22:31 Comment(0)
D
1

Still not possible yet, but if we know the datetime of the commit we want to create shallow clone of, we can use git --shallow-since=<date>, example if we know commit X was pushed at "2021-12-19T20:37:05Z", we can:

git clone --shallow-since="2021-12-19T20:37:05Z" <url>

will only give history from commit X

Dunaway answered 19/12, 2021 at 23:46 Comment(0)
A
-3

What about creating a branch at that special commit and then git clone --single-branch?

Aptitude answered 3/9, 2018 at 1:48 Comment(3)
i think that's the wrong way around: i want my history to start at the given commit, not to end.Inexertion
yes. i also want all the branches (i'm interested in) that forked off after xxx.Inexertion
Oh, OK, I re-read you question and you state explicitly you want "ot-yet-merged feature branches and master". Point taken.Aptitude

© 2022 - 2024 — McMap. All rights reserved.