簡體   English   中英

Git刪除第二個存儲庫和歷史記錄

[英]Git delete second repository and history

我相信我復制粘貼了一個git項目內容(編輯) B。在我項目的文件夾中A.經過一些測試和修改后,我刪除了git項目B,並添加了它。 但是我的項目A中仍然顯示了所有提交歷史記錄。

  • 如何刪除除原始項目中的內容之外的所有內容?

觀察:

  • 當我做git branch -av時,我只看到項目A的分支很好。

  • 當我做git遙控器時,我只看到好的原點(我刪除了項目B - 原點)

  • 當我展示所有分支時,我看到兩個項目的提交。

  • 沒有提交已從項目A合並到B或反之亦然。 (我在sourcetree中可以看到兩個項目從未相互交叉過。

  • 在.git文件夾中,我可以在日志中看到SHA並且引用不屬於項目A的dans。

我不知道我到底做了什么來結束這種狀態......

評論:

文件夾路徑的示例:

C:\\ gitRepo \\ ProjectAB \\

C:\\ gitRepo \\ ProjectAB \\項目A-1 ...

C:\\ gitRepo \\ ProjectAB \\項目A-2 ...

C:\\ gitRepo \\ ProjectAB \\項目B-1 ...

C:\\ gitRepo \\ ProjectAB \\項目B-2 ...

當您將B復制粘貼到A git倉庫時,您創建了一個嵌套的git倉庫
這意味着,每次B進行新的提交時,A都會將新的B SHA1記錄為gitlinkA索引中的特殊條目 )。

刪除B時,在A中添加並提交該刪除(以記錄gitlink B的刪除)。

但是A的歷史仍然會包含B在歷史中被修改的所有實例(因為B gitlink每次B都有自己的新提交時會改變)。

要從歷史記錄中完全刪除B,您需要git filter-branch (重寫歷史記錄)

就像是:

git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch PATH-TO-B' \
   --prune-empty -- --all

OP Kadgiko的案例中, 經過討論 ,似乎:

  • 回購B復制 A上(產生混合的.git內容)
  • 看起來這些更改已轉移到遠程A(因此無法進行克隆)。

結論是:

好吧,將創建一個新項目,並從那里開始,這是一個相對較新的項目,如果我們失去了最后的100次提交,這將不會太麻煩。

暫無
暫無

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

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