Git的方法:回购包含一个空目录 - 会发生什么?(Git: repo contains an em

2019-06-26 11:16发布

Git的跟踪文件,而不是目录 ,我们目前还不能add空目录 (该标准招不添加一个空目录,而是内的文件,也看到了FAQ )。

然而,一个git repo可能包含一个空目录。 所以会发生什么我克隆回购或者检出含空目录的一个分支? 难道是在工作树产生的?

Answer 1:

要建立一个空目录的测试库,你可以使用下面的脚本(在临时directoy运行)。

当检查出来,但是,空目录被忽略。 这里也一样,Git的只有文件,而不是目录的作品,即使后者存在。

Github上和tig显示空目录, gitk没有。

#!/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


文章来源: Git: repo contains an empty directory - what happens?
标签: git directory