我试图找到一种方法,通过提取已更改的文件/目录,从git仓库生成补丁文件,可用于应用存储在另一台计算机上的主分支,而无需网络访问。
我在这里跟踪blog关于创建和应用通过Google找到的git的补丁。所以我跟着博客,试图转移我做的一些更改,包括添加一个新的子文件夹,一些新的和修改过的文件。
我基于上述博客尝试的步骤基本上是:
#Creating the patch on the changed branch
git format-patch master --stdout > fix_something.patch
#Applying the patch
git apply --check fix_something.patch
git am --signoff < fix_something.patch
最后,git apply --check
不会返回任何错误,并且已成功传输新文件和已修改文件。但是新的子文件夹在目标项目中是空的。没有内容被转移。
我在这个过程中遗漏了什么?
(顺便说一句,添加的子文件夹是另一个(独立的)git项目的副本。我知道子模块,但我不想打扰,因为我的目标计算机没有互联网访问权限。)
提前致谢。
答案 0 :(得分:0)
我试图找到一种从git repo生成补丁文件的方法...以应用于存储在另一台没有网络访问权限的计算机上的主分支。
实现目标的最佳方法是使用git bundle
关于你问题的第二部分:
顺便说一下,添加的子文件夹是另一个git项目的副本......
submodule
...
但是目标项目中的新子文件夹是空的
由于文件夹是submodule
,因此内部没有文件,因为这是&#34;外部&#34;存储库,只要git处理它。您必须为根回购和submodule
应用相同的解决方案。
根据您的问题,我假设您知道submodule
是什么。如果不将其视为存储库中的存储库。 Git将它们作为单独的存储库进行管理,因此submodule
的内容不由根存储库管理。