我有一个非常简单的远程git存储库:
*---*---(a)---*---(b, HEAD) (master)
我也一直在项目的本地仓库中工作,其初始状态对应于commit (a)之后的状态,并且具有许多分支:
(a')---*-------------*-----------* (my-master)
\___________/___________/__ (my-dev)
\______________..._______/ (feature, hotfix branches)
但是,无法正确获取本地存储库的初始提交(即,使用git命令),而是通过复制项目文件(因此命名为(a'),因为它对应于与(a)相同的状态,但与Git的观点不同观点)。现在,我想将我的本地更改与远程仓库合并,而且还要以某种方式将“本地仓库”的初始提交“绑定”到提交(a),以得到以下图片:
*---*---(a)---*-----------------------(b)-- (merge-commit, HEAD) (master)
\________________________________/ (my-master)
\___________/___________/__ (my-dev)
\______________..._______/ (feature, hotfix branches)
最合适的方法是什么?
感谢戳评论,我找到了适合我目的的解决方案。
# add remote repo and fetch it
git remote add repo <repo_addr>
git fetch repo
# create new branch for rebasing onto
# here 'a' is hash of the commit (a)
git checkout a
git branch my-huge-feature
# rebasing my-master branch onto my-huge-feature
git checkout my-master
git rebase my-huge-feature
# fast-forwarding my-huge-feature pointer
git checkout my-huge-feature
git merge my-master
完成这些步骤后,我将我的本地提交历史记录集成到远程回购历史记录中(省略了我的巨大功能)。
但是,rebase
命令不会保存分支历史记录,因此远程存储库会将我的提交存储在单个分支中。尽管对我来说还可以,但是如果此答案提供了保留分支历史记录的方法,我将不胜感激。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句