Git子模块绝对worktree路径配置

fla*_*ack 12 git git-submodules

这是我的子模块redmine_dashboard配置文件:

子模块配置文件:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    worktree = /Users/daniel/redmine/vendor/plugins/redmine_dashboard
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:ebc/redmine_dashboard.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[gui]
    wmstate = normal
    geometry = 841x391+-8+43 187 177
Run Code Online (Sandbox Code Playgroud)

苹果电脑

worktree = /Users/daniel/redmine/vendor/plugins/redmine_dashboard
Run Code Online (Sandbox Code Playgroud)

Linux的

worktree = /home/daniel/redmine/vendor/plugins/redmine_dashboard
Run Code Online (Sandbox Code Playgroud)

问题

我可以为亲戚更改此绝对路径吗?就像是:

worktree = ../../vendor/plugins/redmine_dashboard
Run Code Online (Sandbox Code Playgroud)

And*_*ndy 8

是的,您应该能够使用相对路径更新配置文件.您还应该.git将子模块根目录中的工作树目录更新为返回该模块的相对路径.

我相信这已经解决了(至少)最新版本的git(1.7.10.1).我似乎找不到更改日志,所以我不知道它何时修复.通过删除文件夹中的子模块和文件.git/modules夹,然后重做git submodule init和,我能够让git解决问题git submodule update.


Dan*_*ral 2

你为什么要设置worktree?默认情况下,工作树是您运行命令的位置,即.git目录所在的位置。请参阅此问题以获取更多信息。

  • 更像是*为什么 git 为我们制作这些绝对路径?* (8认同)
  • @daniel-c-sobral我做了类似[this](http://help.github.com/submodules/)的东西,所以这个路径是由`git add submodule`命令创建的。当我的 **Dropbox** 将源代码从 Linux 同步到其他 SO(例如 MAC 或 Win)时,树被破坏了:“致命:不是 git 存储库:/home/daniel/redmine/vendor/plugins/redmine_dashboard” 。 (3认同)