git format-patch for new sub-directories

时间:2015-05-27 04:54:14

标签: git

我试图找到一种方法,通过提取已更改的文件/目录,从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项目的副本。我知道子模块,但我不想打扰,因为我的目标计算机没有互联网访问权限。)

提前致谢。

1 个答案:

答案 0 :(得分:0)

  

我试图找到一种从git repo生成补丁文件的方法...以应用于存储在另一台没有网络访问权限的计算机上的主分支。

实现目标的最佳方法是使用git bundle

关于你问题的第二部分:

  

顺便说一下,添加的子文件夹是另一个git项目的副本...... submodule ...
  但是目标项目中的新子文件夹是空的

由于文件夹是submodule,因此内部没有文件,因为这是&#34;外部&#34;存储库,只要git处理它。您必须为根回购和submodule应用相同的解决方案。

根据您的问题,我假设您知道submodule是什么。如果不将其视为存储库中的存储库。 Git将它们作为单独的存储库进行管理,因此submodule的内容不由根存储库管理。