使用git子树处理符号链接

Jea*_*ent 5 git heroku git-subtree

我正在尝试将git存储库的一部分推送到Heroku。

这是存储库结构

网站
---共享
--- site1
--- site2
------共享(这是父目录中共享的符号链接)。

如果我尝试site2在Heroku上简单地推送内容,则由于未shared包含文件,该捆绑包将失败。

我正在寻找一种在Heroku sharedsite2使用git子树发送的方式。

有什么建议么?

Ant*_*ean 0

因此,正如您可能发现的那样,尽管 Git 很乐意存储本身就是符号链接的文件(除非 Windows 上有一些愚蠢的情况),但 Git 并不存储符号链接的目标或内容。您需要此存储库中共享文件夹的内容作为实际文件。

如果您可以将共享文件夹分离到其自己的 Git 存储库,那么您应该能够非常轻松地使用Git 子树(请参见示例 3)。

首先,在您想要的任何位置创建新存储库:

$ <go to the new location>    
$ git init --bare
Run Code Online (Sandbox Code Playgroud)

回到原来的目录:

$ git subtree split --prefix=shared --annotate="(split)" -b split
Run Code Online (Sandbox Code Playgroud)

然后将新分支推送到新的空存储库上:

$ git push <new-repo> split:master
Run Code Online (Sandbox Code Playgroud)

您现在应该将该子树添加/拉到子目录中。

git subtree add --prefix site2/shared <split-remote> master
Run Code Online (Sandbox Code Playgroud)

如果您不想创建单独的存储库,您可以在拆分后停止并直接跳转到子树添加并使用此存储库中的拆分分支。

git subtree add --prefix site2/shared origin split
Run Code Online (Sandbox Code Playgroud)