gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:32:53 25 4
gpt4 key购买 nike

我有一个项目内的本地 git 存储库。我已经决定一些代码需要放在另一个项目中,但我只想要一个 git 存储库。

当前目录结构:

Solution->
- Project1
- .git
- Project2

所需的目录结构:

Solution->
- .git (tracks both projects)
- Project1
- Project2

如何将 .git 移动到根文件夹 (Solution) 以便它可以开始监视 Project1 和 Project2 而不会丢失对修改/提交的跟踪?

注意:我真的不关心保留将要移动到 Project2 文件夹的文件的历史记录。

注意:这不是 ( this question ) 的副本,因为我没有移动 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. 移动所有其他内容(.git/.gitignore.gitconfig 和新子文件夹除外) Solution/Project1/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. cd Solution/, git status。注意不需要的文件。将它们添加到 .gitignore
  6. 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'

关于git - 如何将本地 git 存储库移动到根文件夹并保留历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30629188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com