如何将本地git存储库移动到根文件夹并保留历史记录



我有一个本地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'

子文件夹解决方案

  1. Solution/Project1/中创建一个同名的子文件夹:Solution/Project1/Project1/ .
  2. Solution/Project1/的所有其他内容(.git/, .gitignore, .gitconfig和新子文件夹除外)移至Solution/Project1/Project1/
  3. cd Polution/project1, git add --all, git commit -m'moved to a subfolder
  4. Solution/Project1的所有内容移动到Solution。现在项目文件回到Solution/Project1/.git中,git文件在Solution/
  5. 中。
  6. cd Solution/, git status。注意不需要的文件。添加到.gitignore
  7. 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文件夹
  • 提交

最新更新