Git pull 入一个未跟踪的 repo 副本

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

因此,在理想情况下,当我开始这个项目时,我会从一个源代码中克隆,然后将我的所有更改提交到这个 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/

相关文章:

git - 如何使用 HEAD 和任何 mergetool 解决所有冲突

git - 帮助文档中的 []、<>、- 和 -- 是什么意思?

git - 如何在维护提交历史记录的同时将多个存储库迁移到单一存储库中?

git - --no-ff merge 如何打破平分和指责?

git - 我可以只 merge Git 中不冲突的更改吗?

regex - 通过 `git rebase` 中的提交消息删除提交

git - 推送到 git-hub 存储库时自动忽略选定的代码更改

eclipse - 克隆或推送 git 存储库时 Eclipse 中出现“无法打开 git-upload-pack”错误

git - 如何测试是否允许强制推送?

git - git rebase 尝试后文件消失