git合并并保留原始仓库的历史记录

时间:2015-01-08 15:54:53

标签: git merge

最初我们只能访问源代码的zip。

所以我们下载,解压缩,创建了一个git repo并推送。

除了我们最初的提交之外,没有任何git历史记录。

现在我们可以访问原始仓库,因此想要合并和升级。

这是我到目前为止所做的事情

添加原始仓库

git remote add upstream url_to_their_repo
git fetch upstream

创建空白分支

git checkout --orphan upgrade
git rm -rf .

将他们的代码合并到升级分支

git merge upstream/theirbranch

将我们的代码复制到顶部

git merge master

它显示了一些需要解决的冲突,但是当我这样做时

git blame filename

它显示了执行我们的初始提交而不是原始回购历史记录的开发人员。

有没有办法只复制我们所做的更改的历史记录?

1 个答案:

答案 0 :(得分:0)

我会在新存储库

之上修改我的更改
                    upstream/master
                    |
                    V
A---B---C---D---E---F

G---H---I
        ^
        |
        master

首先从upstream/master

创建一个本地分支
git branch upstreamMaster upstream/master

然后将您的更改重新绑定到upstreamMaster,但省略您的第一次提交。由于第一次提交包含所有文件(解压缩的项目已提交),因此会导致冲突。此外,您只需要进行更改,因此请从提交H开始。

git rebase --onto upstreamMaster H master

您可以使用

git log --pretty=format:%H master |tail -1

找到第一次提交master。

在rebase之后,您的存储库将如下所示

                    upstream/master
                    |
                    V
A---B---C---D---E---F---H---I
                    ^       ^
                    |       |
       upstreamMaster       master

现在您可以快进upstreamMaster

git checkout upstreamMaster
git merge master
相关问题