git - 从当前 HEAD 创建一个新的 Git 存储库,将其设置为原始存储库的远程,并将 future 的更改镜像到两个存储库?

标签 git git-rebase git-cherry-pick

当前仓库有提交

  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/

相关文章:

Eclipse NEON "no staged files"错误

bash - 如何按日期自动压缩 git 历史记录?

git - 检查管道中的git是否有变化

Git rebase 或 merge

git - 如何知道是否有正在进行的 git rebase?

git - 如果我从一个分支中挑选一个提交然后 merge 整个分支,那么 git 历史会发生什么?

git - 在Git cherry-pick或rebase merge 冲突中,如何确定BASE(aka “the ancestor”),LOCAL和REMOTE?

git - 还原后如何挑选提交?

git - 当有多个存储库并且没有一个是默认存储库时,如何在 Trac 中链接到 git 变更集?

git - 如何将nodejs缩回特定版本的V8?