Git: Copy source code to new branch without history
It looks that I have figured out how to do it. For example we have branch myown
.
And we need to create new one empty (without history):
git checkout --orphan common
Now we need to add files:
git add .
And commit all:
git commit -m "Initial"
You can see in log only this commit (not all made in myown branch). Now we can checkout myown branch and continue work:
git checkout myown
We can do multiple commits in own branch (similar to regular work):
git commit -m "feature1"
...
git commit -m "feature2"
Now we have committed both and log contains both. We need to copy that to common
branch and name it "release1"
git checkout common
git merge --squash myown
git commit -m "release1"
That's all for my first part of question.
Also it is easy to commit to common
repository (small change/fix for example related to release1 itself). You can make regular merge to put code back to myown
branch.
I found a faster way that can be used:
git checkout <branch> -- .
This will replace the content of the currently checkouted branch by the content of the <branch>
.
This doesn't copy <branch>
commit history.
If you just want to checkout only some files just replace the .
with the file paths from <branch>
.
EDIT: I found out that this will only replace current files and it will not delete files that are not on the <branch>
.
It is then better to run rm -rf
before doing the checkout.