如何将单个提交推送到新的远程?

时间:2014-04-15 01:59:46

标签: git

我想将一个提交推送到新的远程

我的本​​地日志:A - > B - > C - > D其中A是初始提交

推送本地存储库的常用工作流程:

  • 在服务器上创建项目
  • git add remote origin ...
  • git push -u origin mastergit push -u --all origin

我的远程日志:A - > B - > C - > D


git push -u origin A:master不起作用 - 为什么?

由于人们对为什么
感兴趣 Gitlab不会在初始提交时触发推送事件Web挂钩(不确定是否有错误或功能..)

2 个答案:

答案 0 :(得分:1)

只需创建一个新存储库:

cd ..
mkdir -p newrepo
git init
cd ../oldrepo
git fast-export master~1..master | (cd ../newrepo && git fast-import && git checkout)

然后将遥控器添加到第二个存储库:

cd ../newrepo
git remote add origin someremote
git push --all
git remote add old ../oldrepo
git fetch old
git merge old/master
git push

您当然也可以过滤分支等。

答案 1 :(得分:1)

cherry-pickmerge不是最佳解决方案,但现在可以使用。

mkdir newRepo
cd newRepo
git init
git remote add old ../oldRepo
git remote add origin <remote repository>
git fetch old
git cherry-pick <commit SHA>
git push -u origin master
git merge old/master
# merge by hand if neccessary
# git add <manually merged files>
git commit
git rebase
# check result
git log --oneline
git push origin master