我在Git中有我的.dotfiles(.zshrc,.bashrc等)。
我想在plugins
子目录中有一些额外的回购(也来自我) - 我的Emacs配置有一个自定义仓库,我的LaTeX配置有另一个备份仓库等。
将它们创建为子模块是否有意义?我的意思是:我可以将它用作工作副本,并直接从子模块编辑我的LaTeX配置吗?
或者我在这里混合一些东西? (我想避免在我的机器上使用相同内容的2个dirs,或者差不多,对于每个子模块仓库 - 我希望我的子模块始终保持最新版本,或者差不多。)
更新
我在/usr/me/.dotfiles
确实有我的主回购(同时是一个可编辑的工作副本)。
如果我将子模块放在/usr/me/.dotfiles/plugins
中(例如),我有一个优势,就是在克隆时将所有其他拼图块都取出来,但我知道我无法直接在那里编辑这些文件, 对?然后,这是一个问题...因为我确实有“任务文件”,例如,当我重新安排事情时编辑它们。
要正确编辑这些内容,我必须转到/usr/me/dev/repo-task-files
...根本不可行......
现在,我可以将普通回购放在/usr/me/.dotfiles/plugins
中,但不能作为子模块。这意味着,在其他机器上,我必须手动(或通过脚本)在同一个地方克隆不同的repos,但它不是单行操作(克隆dotfiles时)。
但是,我可以直接编辑文件。
我改进的问题:上面的描述是对的吗?有第三种方式吗?
答案 0 :(得分:0)
<强>更新强>
将它们创建为子模块是否有意义?我的意思是:我能用吗? 这也是一个工作副本,并直接编辑我的LaTeX配置 子模块?
是的,子模块应该用作独立的存储库。在子模块内提交更改与在repo的另一个本地副本中进行更改完全相同。唯一的区别是您在超级仓库中有未提交的更改。
如果我把子模块放在/usr/me/.dotfiles/plugins(例如)中,我有 将所有其他拼图拼凑在一起的优势, 克隆时,但我知道我无法直接编辑这些文件 在那里,对吗?
您可以像编辑任何其他git存储库一样编辑子模块。
现在,我可以把普通的回购放在/usr/me/.dotfiles/plugins中, 虽然不是子模块。这意味着,在其他机器上,我必须这样做 手动(或通过脚本)克隆不同的repos 地方,但它不是单行操作(克隆点文件时)。
这种方法的问题在于&#34; subrepo&#34;将出现在两个存储库中。子项目的文件夹将被视为超级项目中的另一个跟踪目录。
当repo看到其子模块发生变化时,它将报告一个修改过的文件:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)
modified: plugins/LaTeX (new commits, modified content)
原始回答
关于子模块的事情是您将特定版本的存储库绑定到超级项目。如果你继续开发子模块并做出一个会破坏父模块的改变怎么办?
通过使用子模块,您确保始终具有工作版本。
无论如何,您都不应该关心在本地拥有多个存储库副本。
如果您担心在提取时浪费带宽,可以将遥控器添加到指向其他本地副本的仓库。