相关疑难解决方法(0)

你如何合并两个Git存储库?

请考虑以下情形:

我在自己的Git仓库中开发了一个小型实验项目A. 它现在已经成熟,我希望A成为更大的项目B的一部分,它有自己的大型存储库.我现在想添加A作为B的子目录.

如何将A合并到B中,而不会丢失任何一方的历史记录?

git merge repository git-subtree

1517
推荐指数
16
解决办法
44万
查看次数

un-submodule一个git子模块

如何取消子模块git子模块(将所有代码重新放入核心)?

就像"应该"我一样,如"最佳程序"......

git git-submodules

359
推荐指数
8
解决办法
8万
查看次数

在不破坏文件历史记录的情况下合并两个Git存储库

我需要将两个Git存储库合并到一个全新的第三个存储库中.我已经找到了很多关于如何使用子树合并进行此操作的描述(例如JakubNarębski关于如何合并两个Git存储库的答案)并遵循这些说明大多数工作,除了当我提交子树合并所有文件从旧存储库记录为新添加的文件.我可以在旧的存储库中看到提交历史记录git log,但如果我这样做git log <file>,则只显示该文件的一次提交 - 子树合并.从对上述答案的评论来看,我并不是唯一一个看到这个问题的人,但我发现没有公开的解决方案.

有没有办法合并存储库并保持个别文件历史记录完整?

git git-subtree

209
推荐指数
6
解决办法
9万
查看次数

在子目录中合并git存储库

我想在我的工作git存储库中合并一个远程git存储库作为它的子目录.我希望生成的存储库包含两个存储库的合并历史记录,并且合并存储库的每个文件都保留其在远程存储库中的历史记录.我尝试使用如何使用子树合并策略中提到的子树策略,但是在遵循该过程之后,尽管生成的存储库确实包含两个存储库的合并历史记录,但来自远程存储库的单个文件尚未保留其历史记录(任何一个'git log'只显示一条消息"Merged branch ...").

此外,我不想使用子模块,因为我不希望两个组合的git存储库再次分开.

是否可以将远程git存储库合并为另一个存储库作为子目录,来自远程存储库的单个文件保留其历史记录?

非常感谢您的帮助.

编辑:我目前正在尝试使用git filter-branch重写合并的存储库历史记录的解决方案.它似乎确实有效,但我需要再测试一下.我将回来报告我的发现.

编辑2:希望我让自己更清楚我给出了与git的子树策略一起使用的确切命令,这导致远程存储库文件的历史明显丢失.设A是我正在使用的git repo和B git repo我想将它作为它的子目录合并到A中.它做了以下事情:

git remote add -f B <url-of-B>
git merge -s ours --no-commit B/master
git read-tree --prefix=subdir/Iwant/to/put/B/in/ -u B/master
git commit -m "Merge B as subdirectory in subdir/Iwant/to/put/B/in."
Run Code Online (Sandbox Code Playgroud)

在这些命令进入目录subdir/Iwant/to/put/B/in后,我看到B的所有文件,但是git log在其中任何一个文件中只显示提交消息"将子目录合并为子目录/ Iwant/to/put/B /中".它们在B中的文件历史记录丢失了.

什么似乎工作(因为我在混帐初学者我可能是错的)如下:

git remote add -f B <url-of-B>
git checkout -b B_branch B/master  # make a local branch following B's master
git filter-branch --index-filter \ 
   'git ls-files -s | sed …
Run Code Online (Sandbox Code Playgroud)

git

72
推荐指数
4
解决办法
2万
查看次数

Git:从repo导入提交到另一个repo

我有一个Git项目的大型存储库,我为其创建了一个插件,它也是源控制器Git.最近我将插件的文件夹复制到主项目文件夹中.现在我有一个项目文件夹源控制Git和插件的文件夹,也是源控制Git.我的问题是,有没有办法将提交从插件的存储库导入主存储库,以便我可以摆脱插件的.git文件夹?

git

15
推荐指数
1
解决办法
4983
查看次数

如何将一个git存储库添加到另一个git存储库的子文件夹中?

我在一个名为AA的文件夹中有一个GIT存储库,我有第二个名为BB的 GIT存储库.

我想将AA存储库作为子文件夹导入BB存储库.

之前:

AA
 |- .git
 |-  A/
 |-  fileA

BB
 |- .git
 |-  B/
 |-  fileB
Run Code Online (Sandbox Code Playgroud)

后:

BB
 |- .git # new .git with both AA and BB .git infos
 |-  B/
 |-  fileB
 |-  AA/      # <== no .git anymore
 |-  AA/A/
 |-  AA/fileA
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

git

7
推荐指数
1
解决办法
4030
查看次数

如何在不丢失历史记录的情况下将 .git 文件夹移动到父文件夹?

我的本地 git 存储库如下所示

C:\MyRepo
      \MyProject
           \.git
           \ProjectFolder1
           \ProjectFolder2
           \ProjectFolder3
Run Code Online (Sandbox Code Playgroud)

现在我想添加几个需要直接在“MyRepo”下并且需要属于同一个存储库的文件夹。我想这意味着 .git 文件夹也应该直接放在“MyRepo”下

C:\MyRepo
     \.git
     \NewFolder1
     \NewFolder2
     \MyProject
           \ProjectFolder1
           \ProjectFolder2
           \ProjectFolder3
Run Code Online (Sandbox Code Playgroud)

如何在丢失历史记录的情况下将 .git 文件夹上移一个级别?

我使用的是 Windows 操作系统,git 版本是 2.6.3.windows.1

git

5
推荐指数
1
解决办法
2260
查看次数

标签 统计

git ×7

git-subtree ×2

git-submodules ×1

merge ×1

repository ×1