Git拉进了一个未经跟踪的回购副本

时间:2013-10-11 15:51:53

标签: git git-merge git-rebase git-pull

所以在理想的世界中,当我开始这个项目时,我会从源代码克隆,然后将所有更改都提交到此repo。当主项目更新时,我可以将这些更改提取到我的仓库中。 (这是单向交通,没有继续推进。)

然而,当我开始时,我没有克隆,只是下载了已发布的代码ZIP,解压缩它,然后做了git init。我已经将所有更改提交到此代码副本。但是,主代码库现在已经更新,但由于我的副本不是合并,而是我自己的同一基本代码的回购,我无法将主代的更改合并到我的。

有没有办法让这些更改从主代码进入我的仓库而不必重新开始?

3 个答案:

答案 0 :(得分:3)

您可以通过在远程更改之上重新设置私有存储库的更改来修复存储库。

  • 将新远程数据添加到包含正确远程git URL的存储库。
  • 从该远程获取以获取所有正确的远程提交到您自己的存储库
  • 使用git rebase移植您在远程提交之上的提交。
  • 将您的分支合并到远程分支。

这就像是:

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是您提交的压缩文件提交的提交。

答案 1 :(得分:0)

最简单的方法 - 将最新版本的代码克隆到folderA中。假设您在folderB中的解压缩源中工作。将folderB内容复制到folderA。提交更改。推!

答案 2 :(得分:0)

如果您在分支主服务器上,也可以执行以下操作:

git remote add origin
git pull --allow-unrelated-histories origin master

然后合并两个存储库。

如果您有更多分支,请使用带有相同git merge标志的--allow-unrelated-histories