how can I add git submodule into git repo as normal directory?

前端 未结 2 1272
暖寄归人
暖寄归人 2021-02-10 12:18

Let\'s see what it is

  • Create two git repo sub & test
mkdir test sub
cd test && git init && touch R         


        
相关标签:
2条回答
  • 2021-02-10 12:59

    Seems you cannot do that. The name .git is hard-coded in the source code: https://github.com/git/git/blob/fe9122a35213827348c521a16ffd0cf2652c4ac5/dir.c#L1260

    Probably one way is to make a script which renames .git to something else and back before and after adding it into repo like

    In working directory under scripts

    mv .git hidden-git
    

    In Dockerfile

    RUN mv $JENKINS_HOME/scriptler/scripts/hidden-git     
    $JENKINS_HOME/scriptler/scripts/.git
    

    Alternatively, probably it's possible to pass GIT_DIR environment variable into the plugin, so it could use another name.

    0 讨论(0)
  • 2021-02-10 13:19
    git add sub
    git commit -m "add sub directory"
    

    I want to treat them as one git repo and push them remotely, but now the files under sub directory can not be included ?

    They are not included because test sees repo sub as nested git repo, and records only its gitlink, or SHA1, and not its url as it would have if sub had been added as a submodule.

    You would need to push sub to a remote url first, and then add it as submodule for test to see sub files.

     cd test
     git submodule add -- /url/to/sub
    

    Or you would need to use a subtree

    cd test
    git subtree --prefix sub /url/to/sub master --squash
    
    0 讨论(0)
提交回复
热议问题