在新的git存储库上重放提交的最简单方法是?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

我一直在使用git-svn,最近,我在尝试提交时遇到了错误(我认为这是由于libneon中的一个bug造成的,但这超出了这个问题的范围)。解决方案是使用以下方法重新克隆我的git存储库。git svn clone。但是,我在我的旧git存储库中的主分支上有一些更改,无法使用git svn dcommit。我想在用gitSVN克隆的新存储库上重放这些更改。我想我可以用git format-patch,然后在新的存储库上重放这些更改,但我不完全确定如何做到这一点,我想知道是否有更简单或更优雅的方法来实现这一点。

提问于
用户回答回答于

在新存储库中,向旧存储库添加一个远程引用:

git remote add temp file:///path/to/old/repo/on/your/machine

从旧回购处取来:

git fetch temp

看看你在旧回购公司的支行:

git checkout temp/master -b wip

(WIP代表正在进行的工作)

在当前存储库中的内容基础上重新建立更改的基础:

git rebase master

更新主人,指出您的新头:

git checkout master
git merge wip

删除对旧回购和您使用的wip分支的远程引用:

git branch -d wip
git remote rm temp
用户回答回答于

你可以:

  • 将旧回购添加为新回购的遥控器(git remote)
  • 把旧树枝拿来
  • 在当前的基础上重新调整你感兴趣的旧分支的部分。master
# go to your current but incomplete new master branch
git checkout master

# mark your current master HEAD as branch 'tmp'
git checkout -b tmp

# reset your master to the old one
git branch -f master oldrepo/master

# replay the right commits on top of 'tmp' (which was your master HEAD)
git rebase --onto tmp first_SHA-1_of_old_master_to_replay~1 master

# remove tmp branch, 
# your master HEAD is now on top of tmp, with the right commits replayed
git branch -d tmp

扫码关注云+社区