使用 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
)
- 压缩那些补丁(
tar
或 zip
)
- 将它们发送到远程服务器(
scp
或 rsync
)
- 登录到远程服务器(
ssh
)
- 应用补丁(
unzip
/tar
然后是 git apply
),修复冲突并根据自己的喜好编辑历史记录
这将使您的本地副本与以前一样不同步。
假设 "GBs of data" 是大文件而不是很多小文件 changes/files,您可以避免必须将它们存储在实际的 git 存储库中。
这个问题有多种解决方法,我都没有尝试过,但这里有一些是众所周知的:
- Git lfs(大文件存储):https://git-lfs.github.com/
- Git附件:https://git-annex.branchable.com/
在工作中,我使用 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
) - 压缩那些补丁(
tar
或zip
) - 将它们发送到远程服务器(
scp
或rsync
) - 登录到远程服务器(
ssh
) - 应用补丁(
unzip
/tar
然后是git apply
),修复冲突并根据自己的喜好编辑历史记录
这将使您的本地副本与以前一样不同步。
假设 "GBs of data" 是大文件而不是很多小文件 changes/files,您可以避免必须将它们存储在实际的 git 存储库中。
这个问题有多种解决方法,我都没有尝试过,但这里有一些是众所周知的:
- Git lfs(大文件存储):https://git-lfs.github.com/
- Git附件:https://git-annex.branchable.com/