我有一个Git repo Old
,我希望将其转移到现有Git仓库sub
的子文件夹New
中。我在master
内有两个分支feature
和Old
,我想转移过来; Old\master
应该合并到New\master
,New
中应该有一个名为old-feature
的新分支。
我并不过分担心干净的历史;我目前的流程只是在进行迁移之前在git mv
中执行Old
,这对我来说没问题。如果可能的话,我更愿意避免重写历史。
我目前的迁移步骤如下(在New
repo中):
git remote add -f old ...
old-feature
创建新的master
分支。feature
创建本地old/feature
分支。feature
- > old-feature
。old/master
- > master
。虽然这有效,但我发现稍后如果我从old-feature
合并到master
,Git就不会理解历史(我的意思是我的混乱历史)并将每个文件视为合并冲突。如何进行正确的迁移以维护分支关系?
答案 0 :(得分:0)
虽然这属于长评而不是答案,但我想向您展示我通过两个单独的回购跟踪您的流程所取得的结果,以便我可以问下面的示例日志是如何不令人满意的。 (注意:我只有一个合并冲突,这是两个repos中的README.md
文件。)
PowerShell的
> cd Old
> git commit --allow-empty -m "A commit from Old"
> dir -Exclude sub | % { Move-Item $_ sub }
> git add -A; git commit -m "Move all to sub"
> cd ..\New
> git remote add old -f <full-path-to-Old>
> git checkout master
> git checkout -b old-feature
> git branch feature old/feature
> git merge feature
> git log --oneline --graph --all --decorate -20
记录结果
* 4b636e7 (HEAD, master) Merge remote-tracking branch 'old/master'
|\
| * 4aa5741 (old/master) Move all to sub
| * 158c921 Commit from old/master.
| * c258979 Commit from old/master.
| * b00b001 Commit from old/master.
| * b0b582b Commit from old/master.
| * b6487e1 Commit from old/master.
| * 15b676a Commit from old/master.
| * 9db62a7 Commit from old/master.
| * 1ff5856 Commit from old/master.
| | * f8475cb (old-feature) Merge
| | |\
| |/ /
|/| |
| | * 54e0f30 (old/feature, feature) Commit from old/feature.
| | * 999e6b5 Commit from old/feature.
* | | f0dd795 (origin/master) Commit from new/master.
我不确定你想要&#34;维持分支关系时的意思。&#34;您想对我的示例中所示的历史记录进行哪些更改?