如何将父目录添加到git仓库中

4

我是 Git 的新手,请多多关照。我的项目结构如下:

~/proj
~/proj/dir1
~/proj/dir2

我创建了一个 git 仓库(在 Bitbucket 上),我想将 proj/ 中的所有内容(包括 proj)导入到仓库中。应该采取什么正确的方式?我找到的所有说明都会告诉你 cd proj/; git init . ; git add *; 这将把每个子目录(dir1、dir2)添加到仓库中,但不会添加 proj。如何添加 proj 及其子目录?
我以前总是可以在 Subversion 中做到这一点,但无法在 Git 中解决它。理想情况下,当有人克隆项目时,他们将获得 proj/ 及其所有子目录。

2
你不能添加父目录,但是你可以创建一个新目录并将所有目录移动到其中(确保不要移动.git目录或.gitignore文件)。 - ShellFish
3个回答

5
如果你的代码库只应该包含一个名为 proj 的文件夹,而其他文件则不在同一级别上,那么正确的方法是将 proj 作为代码库。你可以按照以下步骤完成:在 proj 文件夹中调用 git init 命令。
这样,当人们克隆你的代码库时,他们会自动获得与代码库同名的文件夹,并包含所有的内容。例如:
git clone git@bitbucket.com/username/proj

这将自动创建一个名为 proj 的文件夹,其中存放着仓库内容。如果现在您有另一个子文件夹中的所有内容,那么他们必须 cd proj / proj 才能到达实际位置。这就是为什么您可能不应该在那里添加另一个目录级别的原因。
但是,如果您想在与 proj (位于同一级别)之外的仓库中拥有其他文件夹,则将父文件夹设置为仓库并在那里添加文件夹可能是有意义的。请注意,通常情况下,您每个单独的项目都希望创建一个仓库。因此,如果您有 proj 和 proj2 ,则应创建两个仓库,每个仓库包含一个项目。

1
非常棒的答案,谢谢。我不想在本地磁盘上有proj / proj,但是我希望确保当某人检出代码时他们拥有proj /。通过将仓库命名为proj /,我将完成所有这些。谢谢! - BigBrownBear00

1
创建一个新的父目录并移动其他目录:
$ mkdir parent
$ mv dir1 dir2 dir3 parent
$ git rm -r dir1 dir2 dir3
$ git add parent/*

然后使用 git status 进行检查。

1
创建父目录。使用git mv将文件夹移动到父目录中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接