使用 git 合并手动复制目录中的更改

Using git to merge changes in a manually-copied directory

在工作中,我使用 git 在我们的远程 VPS 上备份了一个大目录。因为我住在一个非常偏远的小镇,那里的互联网又差又贵,所以我无法通过互联网复制这个 repo。相反,当我开始在家工作时,我在外部驱动器上带了一份目录副本(不幸的是没有“.git”子目录)。

我对目录主副本中的文件进行了大约 10kb 的更改。我想将它们合并到远程服务器上的 git 存储库 而无需 通过互联网传输整个目录。

目前的步数:

git init
git add .
git commit -m "initial"
git remote add VPS [SSH_ADDRESS]
git remote show VPS   # successfully connects to remote

现在我想合并我在本地所做的 10kb 更改,而不传输未更改的 GB 数据。

我尝试过但失败的步骤:

git push VPS   # can't because there are non-integrated remote changes
git fetch VPS  # starts downloading GBs of data

不确定下一步要去哪里。

一种不使用 git 的传输方法尝试传输尽可能少的数据的 hacky 方法,可能有效也可能无效:

  • 生成本地作品的补丁 (git format-patch)
  • 压缩那些补丁(tarzip
  • 将它们发送到远程服务器(scprsync
  • 登录到远程服务器(ssh
  • 应用补丁(unzip/tar 然后是 git apply),修复冲突并根据自己的喜好编辑历史记录

这将使您的本地副本与以前一样不同步。


假设 "GBs of data" 是大文件而不是很多小文件 changes/files,您可以避免必须将它们存储在实际的 git 存储库中。

这个问题有多种解决方法,我都没有尝试过,但这里有一些是众所周知的: