【问题标题】:Move one Git repo into a subfolder of another with branches将一个 Git 存储库移动到另一个带有分支的子文件夹中
【发布时间】:2015-04-19 23:44:51
【问题描述】:

我有一个 Git 存储库 Old,我想将它移动到现有 Git 存储库 New 的子文件夹 sub 中。我在Old 中有两个分支master 和feature,我也想转移它们; Old\master 应该只是合并到 New\master 中,并且在 New 中应该有一个名为 old-feature 的新分支。

我并不太担心清白的历史;我目前的流程是在进行迁移之前在Old 中执行git mv,这对我来说很好。如果可能,我更愿意避免重写历史记录。

我当前的迁移步骤如下(在New repo 中):

  • git remote add -f old ...
  • 从master 创建新的old-feature 分支。
  • 从old/feature 创建本地feature 分支。
  • 合并分支feature -> old-feature.
  • 合并分支old/master -> master.
  • 推动两个分支。

虽然这可行,但我发现稍后如果我从 old-feature 合并到 master,Git 不理解历史记录(我的意思是我的混乱历史记录)并将每个文件视为合并冲突。如何进行适当的迁移以维护分支关系?

【问题讨论】:

  • 您如何处理old 中的git mv?例如。您是否将所有文件和目录从Old 移动到Old\sub?
  • 这两个 repos 是否有任何共同的提交开始?
  • @ShaunLuttin:是的,现在我将它们移动到sub,而它们仍在Old,然后进行迁移。这两个存储库没有任何共同点。

标签: git merge


【解决方案1】:

虽然这属于长评论而不是答案,但我想向您展示我通过使用两个单独的 repos 遵循您的流程所获得的结果,以便我可以询问下面的示例日志如何不令人满意。 (注意:我只有一个合并冲突,即两个 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.

当您想“维护分支关系”时,我不确定您的意思。您想对我的示例中说明的历史进行哪些更改?

【讨论】:

    猜你喜欢
    • 2020-10-23
    • 2013-01-02
    • 2013-02-23
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多