相关疑难解决方法(0)

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

请考虑以下情形:

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

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

git merge repository git-subtree

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

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

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

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

git git-subtree

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

组合多个git存储库

假设我的设置看起来很像

phd/code/
phd/figures/
phd/thesis/
Run Code Online (Sandbox Code Playgroud)

由于历史原因,这些都有自己的git存储库.但我想将它们合并为一个,以简化一些事情.例如,现在我可能会进行两组更改,并且必须执行类似的操作

cd phd/code
git commit 
cd ../figures
git commit
Run Code Online (Sandbox Code Playgroud)

表演(现在)很棒

cd phd
git commit
Run Code Online (Sandbox Code Playgroud)

似乎有几种方法可以使用子模块或从我的子存储库中提取,但这比我正在寻找的要复杂一些.至少,我很高兴

cd phd
git init
git add [[everything that's already in my other repositories]]
Run Code Online (Sandbox Code Playgroud)

但这似乎不是一个单行.有什么git可以帮助我吗?

git

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

从Git存储库中的历史记录中修剪空合并提交

我已经清理了我们的Git存储库,我们需要从历史中删除大部分内容.我这样做使用:

git filter-branch --prune-empty --tree-filter 'rm -rf some_stuff'
Run Code Online (Sandbox Code Playgroud)

--prune-empty除了提交多个父项(合并提交)之外,该标志将删除在该过程之后保留为空的提交.即使合并的分支完全没有包含任何内容,合并也不会向树添加任何内容.

我如何从历史中修剪这些空的合并提交?

git git-filter-branch

39
推荐指数
3
解决办法
8936
查看次数

标签 统计

git ×4

git-subtree ×2

git-filter-branch ×1

merge ×1

repository ×1