2017-03-01 76 views
0

正常情况下,我可以使用cherry-pick将推送提交移动到另一个存储库:I fetch从另一个存储库到我的新存储库的相关分支以及带有提交ID的cherry-pick如何将本地,不受压力的,从损坏的git存储库提交到另一个存储库?

我想为本地 - unpushed - 提交损坏的存储库(出错了,我无法推送我的更改,但我需要将它们移动到另一个存储区)执行同样的操作。

有没有办法让cherry-pick从腐败的回购承诺到另一个回购?

PS:两个存储库位于同一台机器上。

回答

1

另一种可能的方法。

cd repo1_path 
git format-patch -1 <commit> --stdout > /tmp/xxx.patch 
cd repo2_path 
git checkout <branch> 
git am /tmp/xxx.patch 
+0

是否代表SHA? – likeachamp

+1

@likeachamp是的,你想要移动的那个。它可能是一个分支,一个标签或者代表提交的sha1。 – ElpieKay

+0

令人惊叹!由于我的旧回购已损坏,这是我的完美解决方案。 – likeachamp

3

你只需要将提交从一个本地回购推到另一个本地回购?

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

是的,但不是全部。特别的。我假设我可以在第一步后进行樱桃挑选 – likeachamp

+1

是的,在第一条命令之后,您可以将遥控器当作另一个遥控器,因为它确实没有什么不同。 – jready

+1

谢谢!顺便说一句,它应该是'远程添加' – likeachamp

3

远程的不限于另一台机器:如果你有/repo1/repo2一个库,另一个可以从repo1通过简单地使用文件系统路径添加repo1当作遥控repo2复制提交给repo2

cd /repo2 
git remote add repo1 /repo1 

现在,您可以fetchpull,并cherry-pick从提交到repo1repo2

+0

是否有樱桃挑选没有添加它? .git/objects下的一个文件已损坏,因此我无法将其添加为远程文件或推送我的更改等。 – likeachamp

+1

不,如果无法将远程磁带库添加为远程磁带,则无法执行“樱桃挑选”操作:您的最佳打赌是尝试@ ElpieKay的答案出口一个补丁(实际上是一个手动'樱桃选择')。 – Guildencrantz

相关问题