Tag: git subtree

git-subtree添加后如何rebase?

我试图学习Git 1.7.11中添加的新的git-subtree命令。 我添加一个子树后,似乎失去了rebase的能力。 我有与自述文件和库存储库,也有自述文件的主要存储库。 我将它添加到subtree add lib目录: $ git subtree add -P lib/mylib myliborigin master 这工作正常,但现在的历史看起来像这样: * 22c1fe6 (HEAD, master) Merge commit 'b6e698d9f4985825efa06dfdd7bba8d2930cd40e' as 'lib/mylib' – |\ | * b6e698d Squashed 'lib/mylib/' content from commit d7dbd3d * b99d55b Add readme * 020e372 Initial 现在,当我想重新对我的repo对origin/master ,它失败,因为南瓜提交是直接应用于其父提交不适用,因为它是应用于回购的根,而不是我给它的前缀添加子树时。 这样做的原因很明显,如果我看看南瓜的承诺。 没有关于前缀的信息。 这只是原来的mylib承诺压在一起。 只有下一个合并提交知道它的任何事情,但是rebase并没有把它记在这里。 是否有任何解决方法(除了从不分配subtree提交)?

Git子树 – 子树最新,但不能推

我正在使用Git子树与我正在处理的几个项目,以便在它们之间共享一些基本代码。 基本代码经常更新,升级可能发生在任何项目中,最终所有项目都会得到更新。 我遇到了一个问题,git报告我的子树是最新的,但推送被拒绝。 例如: #! git subtree pull –prefix=public/shared project-shared master From github.com:**** * branch master -> FETCH_HEAD Already up-to-date. 如果我推,我应该得到一个信息,没有什么可推…对吗? 对? 🙁 #! git subtree push –prefix=public/shared project-shared master git push using: project-shared master To git@github.com:*** ! [rejected] 72a6157733c4e0bf22f72b443e4ad3be0bc555ce -> master (non-fast-forward) error: failed to push some refs to 'git@github.com:***' hint: Updates were rejected […]

git子模块和子树的区别

使用git子模块和子树有什么概念上的区别? 每个典型的场景是什么?

合并两个Git仓库而不会破坏文件历史logging

我需要将两个Git仓库合并成一个全新的第三仓库。 我已经find了许多关于如何使用子树合并(例如JakubNarębski关于如何合并两个Git存储库 的答案 )的说明以及遵循这些说明的主要工作,除了当我提交子树合并所有文件从旧版本库被logging为新添加的文件。 当我做git log ,我可以看到来自旧版本库的提交历史git log ,但是如果我做的是git log <file>那么它只会显示一个对该文件的提交 – 子树合并。 从上述答案的评论来看,我并不是一个人看到这个问题,但我没有find任何发布的解决scheme。 有什么办法可以合并存储库,并保持个人文件的历史logging不变?

将子目录分离(移动)到单独的Git存储库中

我有一个Git仓库,其中包含一些子目录。 现在我发现其中一个子目录与另一个不相关,应该分离到一个单独的存储库。 我怎么能这样做,而保持在子目录中的文件的历史? 我想我可以做一个克隆,并删除每个克隆不需要的部分,但我想这会给我一个完整的树,当检查一个较旧的修订等。这可能是可以接受的,但我宁愿能够假装两个存储库没有共享的历史logging。 为了说清楚,我有以下结构: XYZ/ .git/ XY1/ ABC/ XY2/ 但是我想代之以: XYZ/ .git/ XY1/ XY2/ ABC/ .git/ ABC/