我有一个位于项目中的本地git存储库。我已经决定某些代码需要在另一个项目中,但我只需要一个git存储库。
当前目录结构:
Solution->
- Project1
- .git
- Project2
所需的目录结构:
Solution->
- .git (tracks both projects)
- Project1
- Project2
如何将.git
移动到根文件夹(Solution
),以便它可以开始同时监视Project1和Project2而不会丢失修改/提交的跟踪?
注意:我并不关心保留将要移动到Project2文件夹的文件的历史记录。
注意:这不是(this question)的重复,因为我没有移动git存储库及其全部内容。我只想将git存储库移动到根文件夹。
答案 0 :(得分:3)
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/
。.git/
的所有其他内容(.gitignore
,.gitconfig
,Solution/Project1/
和新子文件夹除外)至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'
答案 1 :(得分:1)