Re: Need help merging unrelated histories
- From
- Robert Dailey <rcdailey.lists@gmail.com>
- Date
- May 28, 2019, 18:26 UTC
- Message-ID
- <CAHd499CZnhzw+sKM_Nx4_SvUT5YWaLWr9SmBKCkOcH4=wSdaqA@mail.gmail.com>
- In-Reply-To
- <CAHd499BQO8E99Y4=T9V6xXDuDyHdqMJ_sQM4DTraAxLzKf+Z-Q@mail.gmail.com>
On Tue, May 28, 2019 at 8:35 AM Robert Dailey <rcdailey.lists@gmail.com> wrote:
Show 16 quoted lines
> > On Fri, May 24, 2019 at 12:11 PM Andreas Schwab <schwab@linux-m68k.org> wrote: > > > > On Mai 24 2019, Robert Dailey <rcdailey.lists@gmail.com> 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@github.com:powervr-graphics/Native_SDK.git
else
cd Native_SDK.git
git fetch
cd -
firm -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 ```