最初我们只能访问源代码的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
它显示了执行我们的初始提交而不是原始回购历史记录的开发人员。
有没有办法只复制我们所做的更改的历史记录?
答案 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