将远程存储库映射到包含文件的现有目录

Map remote repository to an existing directory with files

我遇到以下问题,找不到解决方案。 我前段时间从 GitHub 下载了存储库 yii2-debug(一个 ZIP 文件)。我更改了一些文件(我知道我不应该这样做,但没有其他选择)。现在我想升级到最新版本,我想以某种方式做到这一点,下次升级会很容易 - 只需从 GitHub 中提取最新更改并合并。

  1. 我有一个包含我当前文件的目录(所以是修改后的版本 1)
  2. 我想将此目录映射到 github
  3. 上的远程存储库
  4. 然后拉取最新的更改(我们称之为版本 2)
  5. 将新的更改与我的代码合并

我试过了 git init 在目录上,然后 git remote add origin, 用 git branch --set-upstream

设置分支

然后我尝试提取最新的更改,但不知何故这并没有很好地解决问题。 GIT 认为我的更改是 "newer" 并且所有被拉取的更改都没有合并,但大部分标记为已删除的文件或类似的东西。

知道如何正确地做到这一点吗?我无法将 GitHub 的最新更改合并到我的代码中。 谢谢

我建议您创建一个新的上游存储库克隆,用您修改后的版本替换该克隆中的文件,并创建一个包含您的更改的新提交。

一种方法是删除新克隆中的所有文件,将修改后的版本复制到新克隆中,添加所有文件,然后提交。

一个稍微 quicker/cleaner 的方法是将 .git 目录从您的新克隆移动到包含您的修改版本的目录,添加所有文件,然后提交。

git clone https://github.com/yiisoft/yii2-debug.git
cd yii2-debug
git checkout -b mychanges <branch-or-tag-you-originally-downloaded>
cd ..
mv yii2-debug/.git modified-version
cd modified-version
git add -A # see note below
git commit -m "my changes"

完成 git add -A 后,您应该使用 git status 查看更改。您下载的 zip 和相应的提交可能包含略有不同的文件(例如,zip 文件可能不包含 .gitignore 文件)。在提交之前查看更改让您有机会取消您实际上没有进行的更改。

执行此操作后,包含修改文件的目录是 git 存储库,带有 mychanges 分支,包含在您最初下载的版本之上的单个提交。您可以将较新的 branches/tags/commits 合并到此分支中,或者将包含您的更改的提交重新设置为其他 branches/tags.