2015-06-09 108 views
-1

我有一个程序分为3个包。我已经在其中一个软件包中设置了本地回购,并将其设置为在gitHub上推送回购。我已经开始研究第二个包,并且我意识到我还没有用git初始化它。我想用同样的gitHub仓库来推第二个软件包,但我不确定它会工作,因为我已经设置了我的第一个软件包来推送它。我想我应该在三个包的父文件夹上完成git init,然后文件夹/包结构会显示在我的gitHub仓库中。有没有简单的方法来解决这个问题?谢谢!我需要git包含父目录

+0

这里有一个解决方案在这里:http://stackoverflow.com/questions/30629188/how-to-move-a-local-git-repository-to-the-root-folder-and-preserve-history/30629580 #30629580 –

+0

在这里,有点不太具体:http://stackoverflow.com/questions/19097259/how-to-move-a-git-repository-into-another-directory-and-make-that-directory-a- gi?lq = 1 –

+0

感谢您的链接! – ponder275

回答

1

比方说,你的父目录被命名为parent,和你的孩子目录被命名为package1package2package3 。我们还假设package1是您拥有git存储库的目录。我只想将的另一个package1目录作为原始package1目录的子目录,并将原始目录package1的内容移入其中。然后将package2package3移至原始package1的子项。您可以将原始package1重命名为父项。 git add --all .整个事情,你现在有一个所有三个目录的回购。最酷的是,你不会失去你移动的所有文件的历史记录; git足够聪明地检测重命名/移动。

+0

谢谢!这听起来像一个简单的方法来做到这一点。 – ponder275

+0

我点击向上箭头。我还需要做什么? – ponder275

+0

我找到了复选标记。谢谢! – ponder275

-1

假设我们有这样的目录结构:

A 
    | 
    B 
    | 
    .git and other files 

您应该:

cd B 
mkdir C 
ls | grep -v '^C$' | xargs -L 1 -I '{}' git mv -r '{}' C/ 
ls ../ | grep -v '^B$' | xargs -L 1 -I '{}' mv ../'{}' . 
git commit -am 'Change directory structure and include parent dir' 
+0

将复杂的shell命令转储为无解释答案并不是很有帮助。请添加一些上下文。 – Chris