如何将本地、未推送的提交从损坏的git存储库移动到另一个存储库?

如何将本地、未推送的提交从损坏的git存储库移动到另一个存储库?,git,git-cherry-pick,Git,Git Cherry Pick,通常,我可以使用cherry-pick:Ifetch将相关分支从“另一个”存储库移动到另一个存储库,并使用提交ID将推送提交移动到新的repo和cherry-pick 我想对损坏的存储库中的本地(未推送)提交执行相同的操作(出现了一些错误,我无法推送我的更改,但我需要将它们移动到另一个repo) 是否有任何方法可以将损坏的回购提交给另一个回购 PS:两个存储库都存在于同一台机器上 您是否只需要将提交从一个本地回购推送到另一个本地回购 git remote add local /path/to/r

通常,我可以使用
cherry-pick
:I
fetch
将相关分支从“另一个”存储库移动到另一个存储库,并使用提交ID将推送提交移动到新的repo和
cherry-pick

我想对损坏的存储库中的本地(未推送)提交执行相同的操作(出现了一些错误,我无法推送我的更改,但我需要将它们移动到另一个repo)

是否有任何方法可以将损坏的回购提交给另一个回购


PS:两个存储库都存在于同一台机器上

您是否只需要将提交从一个本地回购推送到另一个本地回购

git remote add local /path/to/repo.git
git push local master

远程不限于另一台机器:如果您在
/repo1
有一个存储库,在
/repo2
有另一个存储库,您可以使用文件系统路径将
repo1
的提交复制到
repo2
,只需将
repo1
作为远程添加到
repo2

cd /repo2
git remote add repo1 /repo1

现在,您可以从
repo1
提交到
repo2
pull
,以及
cherry pick
提交另一种可能的方法

cd repo1_path
git format-patch -1 <commit> --stdout > /tmp/xxx.patch
cd repo2_path
git checkout <branch>
git am /tmp/xxx.patch
cd repo1\u路径
git格式补丁-1--stdout>/tmp/xxx.patch
cd repo2_路径
git签出
git am/tmp/xxx.patch

是,但不是全部。特殊的。我想我可以在第一步之后进行cherry pick是的,在第一个命令之后,你可以将遥控器视为另一个遥控器,因为它真的没有什么不同。谢谢你,我错过了cherry pick的那一部分,没有添加它?.git/objects下的一个文件已损坏,因此我无法添加为远程文件或推送我的更改等。不,如果无法将repo添加为远程文件,则不能执行
樱桃拾取操作:您最好尝试@ElpieKay的答案导出补丁(实际上是手动
樱桃拾取
)。这代表SHA吗?@likechamp是的,你想搬的那个。它可以是一个分支、一个标记或代表提交的sha1。太棒了!由于我的旧回购协议已损坏,这一个对我来说是完美的解决方案。是否有办法指定提交的日期范围,而不是逐个选择?@likechamp是的,有一些方法可以指定修订范围
-1
可以是
-n commit
,其中
n
是一个正数<代码>。。