Git需要从特定文件夹克隆或删除顶级文件夹,但保留该文件夹中的内容

时间:2013-03-19 00:05:37

标签: git

我正在尝试通过git部署rails应用程序,但我的文件夹结构有点傻傻b / c我在这样的不必要的文件夹中创建了所有内容:

MASTER
------ mysite
------------- app
------------- conf
------------- Gemfile
....

我的git网址看起来像这样:

git@subdomain.beanstalkapp.com:/mysite.git

我如何从“mysite”文件夹中克隆存储库,或者如何删除“mysite文件夹”并将其内容移动到主分支本身?

3 个答案:

答案 0 :(得分:3)

您的mysite文件夹是否是其父文件夹中唯一的内容?如果是,您可以将mysite文件夹中的所有内容移动到其父文件夹。从父目录执行:

mv -rf mysite/* .
rm -rf mysite
git add .
git commit -am 'removing mysite folder'
git push origin master

答案 1 :(得分:2)

如果您没有任何隐藏文件(像.gitignore这样的点文件),JoãoDaniel的回答就足够了。

这些命令应该是我能想到的所有情况(包括移动点文件)

# Change dir into the root of the repo
cd ROOT_DIRECTORY_OF_YOUR_REPO

# Find all content directly under mysite, and execute
# git mv on them with the destination directory as the
# current directory
find mysite/ -mindepth 1 -maxdepth 1 -exec git mv {} . \;

# Commit the change
git commit

答案 2 :(得分:0)

Git可能并不理想,但您可以使用sparseCheckout来完成。

Is there any way to clone a git repository's sub-directory only?”是一个类似的问题,有很好的步骤。

克隆子文件夹后,可以删除sparseCheckout配置提交root,然后再推回到master。