gpt4 book ai didi

Git:将浅克隆推送到没有 'unshallow' 的新远程?

转载 作者:太空狗 更新时间:2023-10-29 14:36:50 25 4
gpt4 key购买 nike

我使用 git clone --depth=1 浅克隆了一个存储库。我做了一些更改......显然不了解浅克隆的复杂性......现在想将新项目推送到新的远程。

在我的主要开发机器上:

git clone --depth=1 file://old_project new_project
cd new_project
# made a handful of commits here....

我现在想把项目推送到另一台机器上。我在那台远程机器上做了:

git init --bare new_project.git

然后回到我的机器上:

git remote remove origin
git remote add origin ssh://<remote host>/path/to/repos/new_project.git

现在,当我尝试push 项目时,我得到:

fatal: protocol error: expected old/new/ref, got 'shallow 7f6a256...'
fatal: The remote end hung up unexpectedly
Counting objects: 49299, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (44533/44533), done.
error: pack-objects died of signal 13
error: failed to push some refs to '<my new remote>'

我想要做的是让新的存储库包含从最初的浅克隆开始的历史,但仍然保留在那之后所做的更改。换句话说,我不想“去浅化”分支并 pull 出所有以前的历史记录。

有没有办法不从项目中删除 .git 目录并重新开始?

我的机器运行的是 git 1.9.1。 Remote 正在运行 1.7.11.7。我可能可以在没有不良影响的情况下更新我的一侧,但不能更新 Remote ,因为它承载了其他几个我不想冒险中断的项目。

最佳答案

我会这样做:

  1. 创建一个新的根分支:

    git checkout --orphan truncated_master
  2. 用浅存储库中最早的可用提交填充其初始提交:

    START_COMMIT=$(git rev-list master|tail -n 1)
    git checkout $START_COMMIT -- .
    git commit -m "Initial commit"
  3. 将所有提交从 master 复制到新分支:

    git cherry-pick $START_COMMIT..master
  4. 将新分支推送到新远程:

    git push origin truncated_master:master

关于Git:将浅克隆推送到没有 'unshallow' 的新远程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38275371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com