当前仓库有提交
A -> B -> C
^
|
HEAD
我想创建一个新的仓库,它的 master 分支从当前仓库的提交 C
(HEAD) 开始。
C
^
|
HEAD
另外,如果一个新的提交 D
被添加到当前存储库:
A -> B -> C -> D
^
|
HEAD
新的存储库将变成:
C -> D
^
|
HEAD
在下一次推送/镜像时。
由于在我向项目提交更改的同时学习开发软件,由于在其长期历史(500 次提交)中添加和删除了大文件,存储库的大小已经增加。
这个工作流程可以用git轻松实现吗? (同时使用 GitHub 和 GitLab)
最佳答案
您可以轻松地从现有的存储库创建一个新的存储库,至少在本地:只需 git clone <src repo> [dest dir]
(可能使用 --depth
或类似的方法来节省大小,尽管有警告,请参阅 the manual 了解详细信息)。使新存储库自动遵循原始存储库的历史并不容易。新的 repo 将有其 origin
设置为指向原始文件,但更新将需要 pull/fetch+merge/像往常一样。你可以在旧的 repo 中设置一些提交后 Hook 来自动化 cd <new repo> ; git pull ; cd $OLDPWD
有点,我不太精通 git 的钩子(Hook)是如何工作的。或者,您可以将新 repo 设置为旧 repo 中的远程并推送到它,但我不确定这会如何影响新 repo 的工作树(即 checkout 的内容)。与像 GitHub 这样的远程供应商合作将是完全不同的蠕虫病毒。
如果您想尝试清理您的历史记录,您可能需要查看 rebase
可能还有 cherry-pick
.
关于git - 从当前 HEAD 创建一个新的 Git 存储库,将其设置为原始存储库的远程,并将 future 的更改镜像到两个存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53689669/