簡體   English   中英

重構Git存儲庫中的文件

[英]Restructuring Files in Git Repository

我有一個具有以下文件夾結構的Git存儲庫:

allprojectfiles
--otherfolders
--source
----projectname
------projectname
---------git initilalized here
---------otherfolders
---------workingonthesefiles(bound to remote)

我可以重構項目以從allprojectfiles文件夾中獲取Git軌道而不會丟失歷史記錄嗎?

Git跟蹤樹和Blob,而不是文件夾

唯一的文件夾跟蹤Git是在樹提交中 因此,在一般情況下,您可以自由移動文件夾,Git只需將新樹寫入存儲庫。

我建議使用git mv在一個干凈的工作樹中git mv這些目錄移動。 如果您沒有為提交暫存任何文件級更改,那么Git歷史記錄將正確地將您的新結構視為移動/重命名,而不是添加/刪除操作。

git不會顯式跟蹤重命名。 一定要有一個提交除了移動之外什么都不做(在另一個路徑上將是一個刪除+添加)。 然后git命令將自動檢測移動,但有時(例如,如果兩個文件具有相同的內容,但邏輯上您可以告訴哪個文件被重命名)將無法跟蹤正確的歷史記錄。 如果不重寫歷史,我不能避免這種情況。

這讓我想到了一個想法:使用git filter-branch,應該可以將文件夾提取到另一個位置,即新布局中的“正確”位置,然后重新添加其余位置。 但這將完全改寫你的歷史。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM