我有一个本地git存储库,它在一个项目内部。我已经决定,一些代码需要在另一个项目,但我只想要一个git存储库。
当前目录结构:
Solution->
- Project1
- .git
- Project2
期望目录结构:
Solution->
- .git (tracks both projects)
- Project1
- Project2
我如何将.git
移动到根文件夹(Solution
),以便它可以开始监视Project1和Project2,而不会丢失修改/提交的跟踪?
注意:我真的不关心保存将要移动到Project2文件夹的文件的历史记录。
注意:这不是(这个问题)的重复,因为我没有移动git存储库及其全部内容。我只想把git仓库移到根目录
git add -u
溶液
最优雅,需要6个命令。
cd Solution/
#dot means "move it here"
mv Project1/.git .
#make git add deleted files
git add -u
#make it recognize them as moved
git add Project1/
现在git status
应该显示"重命名…"
git commit -m'moved to a subfolder'
现在检查不需要的文件并更新.gitignore
#add the project2:
git add --all
git commit -m'added project2'
子文件夹解决方案
- 在
Solution/Project1/
中创建一个同名的子文件夹:Solution/Project1/Project1/
. - 将
Solution/Project1/
的所有其他内容(.git/
,.gitignore
,.gitconfig
和新子文件夹除外)移至Solution/Project1/Project1/
-
cd Polution/project1
,git add --all
,git commit -m'moved to a subfolder
- 将
Solution/Project1
的所有内容移动到Solution
。现在项目文件回到Solution/Project1/
和.git
中,git文件在Solution/
中。 -
cd Solution/
,git status
。注意不需要的文件。添加到.gitignore
-
git add --all
,git commit -m'added project2'
git mv
溶液
cd Solution/Project1/
mkdir Project1/
#Now move all your files with git mv
git mv foo.txt Project1/
git mv bar.js Project1/
git mv fizz/ Project1/
....
git commit -m'moved files to a subfolder'
cd ../
现在将所有文件从Solution/Project1/
移动到Solution
。这可能是用mv
命令完成的,但我没有抓住确切的语法。
# this should work now
git status
# fix .gitignore if necessary
git add --all
git commit -m'added project2'
- 将project1的内容移动到project1 的子文件夹中
- 提交修改
- 移动project2到project1文件夹
- 提交