我有一个Git存储库 d:\ repositories \ temp 和一个目录 d:\ temp1 ,我希望实现这一点:目录中的所有更改 d:\ temp1 并将其提交到存储库 d:\ repositories \ temp (本地和远程)。可能吗?感谢。
注意 :我在这里需要的功能可能类似于SVN的外部链接。
答案 0 :(得分:4)
您可以将d:\temp1
声明为:
git init .
)以记录其更改 d:\repositories\temp
git submodule add -b master -- /d/temp1
git submodule update --init
请参阅“true nature of submodules”:
temp1
将成为d:\repositories\temp
,d:\temp1
中所做的任何更改均可在d:\repositories\temp\temp1
git submodule update --remote
内提交并更新
这样,temp
在任何时候都会记录它正在使用的temp1
的确切状态(我更喜欢to a subtree)
正如我在“SVN:externals equivalent in GIT?”中提到的那样,即使它是not completely the same,也接近svn:external
。
请注意,如果您将temp
推送到GitHub,您会看到temp1
为灰色文件夹:该灰色文件夹为 gitlink (a {{ 3}})
如果使用--recursive选项克隆该GitHub存储库,您将获得temp1
的内容,因为Git将能够克隆回/d/temp1
。
...
但是,没有其他人能够克隆您的GitHub repo 和获取temp1
内容,因为他们无法访问您的/d
磁盘!
为了保留子模块的内容,最好先将temp1
本身推送到自己的GitHub仓库,并temp
通过其GitHub URL引用temp1
(和不是通过本地路径/d/temp1
)
special entry in the parent index更改子模块temp1
的网址。
答案 1 :(得分:1)
Git有一个叫做子模块的功能,可以用来实现你想要实现的目标,下面看一下这个https://git-scm.com/book/en/v2/Git-Tools-Submodules