如何将本地、未推送的提交从损坏的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
:Ifetch
将相关分支从“另一个”存储库移动到另一个存储库,并使用提交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
是一个正数<代码>。。