是否可以重新安排存储库并保留重新分配的文件的提交历史记录?
Is it possible to re-arrange a repository and keep commit history of files that being re-allocated?
我还有一个连接到远程存储库的大型存储库。
我想重新安排它,但我不想在当前目录上应用这些更改,所以我创建了一个新的本地目录,一个新的空远程存储库。
我将我当前的仓库镜像到新的空远程仓库。
然后,我将新的空目录连接到那个 repostiroy 并 git pull
它。
现在我在我的本地新存储库中有了存储库的完整副本。
我想重新安排它,并移动一些文件 in/outside 它们当前的目录。
问题是,当我这样做,然后 commit & push
到远程存储库时,我看到所有提交历史在移动到另一个位置后都被删除了。
当我编辑文件但将它们保留在当前位置,然后 commit & push
,更改会上传并保留提交历史记录。
所以只有当我将文件移动到该镜像存储库中的其他目录时才会出现问题。
有没有办法在移动文件的情况下保留镜像之前提交的提交历史?
谢谢。
很简单。您创建一个将保持不变的分支,checkout
您的主分支并执行更改。您不需要合并这些分支,您将在为此目的创建的分支中拥有旧的提交历史,而在您的主分支中拥有新的提交历史,master
.
编辑
假设您在 master
分支。
执行:
git branch archive
git checkout archive
git push -u origin archive
这会在您的存储库中创建一个分支,然后在远程存储库中更新它。
现在,执行
git checkout master
mv myfolder1/myfile myfolder2
git add .
git commit
git push
查看
git log
你会看到旧的历史丢失了。但是现在执行
git checkout archive
git log
您会看到在存档分支中您拥有文件移动之前的所有提交历史记录。
我还有一个连接到远程存储库的大型存储库。
我想重新安排它,但我不想在当前目录上应用这些更改,所以我创建了一个新的本地目录,一个新的空远程存储库。
我将我当前的仓库镜像到新的空远程仓库。
然后,我将新的空目录连接到那个 repostiroy 并 git pull
它。
现在我在我的本地新存储库中有了存储库的完整副本。
我想重新安排它,并移动一些文件 in/outside 它们当前的目录。
问题是,当我这样做,然后 commit & push
到远程存储库时,我看到所有提交历史在移动到另一个位置后都被删除了。
当我编辑文件但将它们保留在当前位置,然后 commit & push
,更改会上传并保留提交历史记录。
所以只有当我将文件移动到该镜像存储库中的其他目录时才会出现问题。
有没有办法在移动文件的情况下保留镜像之前提交的提交历史?
谢谢。
很简单。您创建一个将保持不变的分支,checkout
您的主分支并执行更改。您不需要合并这些分支,您将在为此目的创建的分支中拥有旧的提交历史,而在您的主分支中拥有新的提交历史,master
.
编辑
假设您在 master
分支。
执行:
git branch archive
git checkout archive
git push -u origin archive
这会在您的存储库中创建一个分支,然后在远程存储库中更新它。
现在,执行
git checkout master
mv myfolder1/myfile myfolder2
git add .
git commit
git push
查看
git log
你会看到旧的历史丢失了。但是现在执行
git checkout archive
git log
您会看到在存档分支中您拥有文件移动之前的所有提交历史记录。