On Tue, May 28, 2019 at 8:35 AM Robert Dailey <rcdailey.lists@xxxxxxxxx> wrote: > > On Fri, May 24, 2019 at 12:11 PM Andreas Schwab <schwab@xxxxxxxxxxxxxx> wrote: > > > > On Mai 24 2019, Robert Dailey <rcdailey.lists@xxxxxxxxx> wrote: > > > > > Can anyone provide some advice on how to properly restructure this > > > repository to create some ancestry, as if all along a `master` existed > > > and all release branches were based on this in a linear fashion? > > > > How about using git replace --graft, then git filter-branch to make it > > permanent? > > I unfortunately have little-to-no experience with low level plumbing > commands. Could you provide an example of a series of commands to run? > It will help me to figure out how to do it on my own for my specific > use case. Thanks in advance. Toyed around with it a bit, and tried with the script below. There were no errors, but I noticed that it erased my `.gitattributes` file on master that I committed before performing the graft. Why did it remove the file? I assume I'm not doing this correctly. Please advise. Thank you. ```sh #!/usr/bin/env bash set -ex if [[ ! -d Native_SDK.git ]]; then git clone --bare git@xxxxxxxxxx:powervr-graphics/Native_SDK.git else cd Native_SDK.git git fetch cd - fi rm -rf test_repo git clone Native_SDK.git test_repo cd test_repo git checkout -f --orphan new_master echo '* text=auto' > .gitattributes git add .gitattributes git commit -m 'Add gitattributes file' c=$(git log --oneline origin/3.4 | tail -1 | cut -d ' ' -f 1) git replace --graft $c new_master git filter-branch HEAD..origin/3.4 git merge --no-edit --no-ff origin/3.4 ```