Beat Bolli <dev+git@xxxxxxxxx> writes: > What would work in my opinion is this, if I understand you correctly: > > 1. In the Git repo of day 1, remove all files except for the .git > folder. This is to make sure ... > 4. Continue from step 1 for each remaining day. > > This will result in one repository that has one commit per day. Going > forward, you'd probably want to commit more often so that your commits > comprise a meaningful unit of work instead of arbitrary day > boundaries. Hmph, perhaps I am misunderstanding things, but I didn't read in the original or the follow-up from the OP any wish to "squash" a day's worth of activities into a single commit each. Let me make sure what I understood from the follow-up from the OP is not too far away from the reality. I thought the day's activity is * The whole "repository + working tree" from day (N-1) is copied into a new "repository + working tree" for day N, to let the user to play in. Then the user hacks away, creating commits on top of the HEAD. So there may be a directory structure - FBustamante/ - Day-01/ - .git/ - COPYING - ... - Day-02/ - .git/ - COPYING ... - Day-10/ - .git/ - COPYING - ... but Day-10/.git has ALL the history for everything. Day-10/.git is a superset of Day-09/.git, which in turn is a superset of Day-08/.git, etc. all the way down to Day-01/.git/. If that is the case, and if the end state of each day needs to be given a "label" so that it is easily discoverable, then what I would do would be something like: $ cd FBustamante $ cp -a Day-10 ALL to first prepare an exact copy of Day-10 in ALL, and then $ for d in Day-?? do rev=$(git -C "$d" rev-parse HEAD) git -C ALL tag "$d" "$rev" done to go in to each day's repository to grab its HEAD, and make a tag for that commit in the ALL repository. Then doing the usual things like $ cd ALL $ git log Day-01 $ git log Day-02..Day-04 should give us what happend on the first day, what happened on the third and fourth day, etc., as expected.