Git: repo contains an empty directory - what happens?

前端 未结 1 2039
悲哀的现实
悲哀的现实 2021-02-07 11:07

Git tracks files, not directories, and we cannot currently add empty directories (The standard trick does not add an empty directory, but instead a file within, see also the FAQ

1条回答
  •  我在风中等你
    2021-02-07 11:25

    To setup a test repository with an empty directory, you can use the following script (run it in a temporary directoy).

    When checking out, however, the empty directory is ignored. Here too, Git only works with files, not directories, even if the latter are present.

    Github and tig display empty directories, gitk does not.

    #!/bin/bash
    set -e
    
    echo ---- initialize the repo...
    #rm -rf .git
    git init
    
    echo ---- create an empty tree object...
    empty_tree=$(git mktree < /dev/null)
    
    echo ---- create a parent tree containing the empty subtree...
    root_tree_ls=$(echo -e 040000 tree $empty_tree\\tvacuum)
    root_tree=$(echo "$root_tree_ls" | git mktree)
    
    echo ---- commit...
    commit_msg="This commit contains an empty directory"
    commit=$(git commit-tree $root_tree -m "$commit_msg")
    
    echo ---- create a branch...
    git branch master $commit
    
    # output the ids:
    echo ----------------------------------------------------
    echo "empty tree:" $empty_tree
    echo "root tree: " $root_tree
    echo "commit:    " $commit
    

    0 讨论(0)
提交回复
热议问题