因此,在理想情况下,当我开始这个项目时,我会从一个源代码中克隆,然后将我的所有更改提交到这个 repo。当主项目更新时,我可以将这些更改 pull 入我的存储库。 (这是单向交通,没有 push 。)
但是,当我开始时,我并没有克隆,而是简单地下载了一个已发布的代码 ZIP,解压,然后执行 git init
。从那以后,我已将所有更改提交到此代码副本。然而,主代码库现在已经更新了,但由于我的副本不是 merge ,而是我自己的相同基础代码的 repo,我无法将主人的更改 merge 到我的。
有没有什么方法可以在不重新开始的情况下将主代码中的这些更改添加到我的存储库中?
最佳答案
您可以通过在远程更改之上重新设置私有(private)仓库的更改来修复您的仓库。
- 向您的存储库添加一个包含正确远程 git URL 的新远程。
- 从该远程获取以获取所有正确的远程提交到您自己的存储库
- 使用
git rebase
将您的提交移植到远程提交之上。 - 将您的分支 merge 到远程分支。
这会是这样的:
cd $your_git_repository
git remote add origin $URL
git fetch origin
git branch -m my_branch
git rebase --onto $base_commit $your_first_commit my_branch
git merge $remote_branch
git log --graph --decorate --oneline
其中 $base_commit
是与您首先下载的 zip 对应的提交,而 $your_first_commit
是您提交提取的 zip 文件的提交。
关于Git pull 入一个未跟踪的 repo 副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19322303/