簡體   English   中英

從遠程git倉庫中刪除不需要的文件

[英]Removing unwanted files from remote git repository

當將現有的本地git存儲庫推送到Bitbucket時,我不小心忘記了包含.gitignore文件。 結果,大量不需要的.aux文件出現在遠程存儲庫上。

直接在Bitbucket上刪除它們最多將花費很長時間。 在本地有什么好的方法嗎? 還是有一種安全的方法可以從本質上“重新開始”,以便我可以包含.gitignore文件?

此外,無論出於何種原因,都無法在本地文件中找到.aux文件。 在我進行最初的推送后,它們才出現在Bitbucket上。

我是git的新手,因此特別感謝明確的解決方案。

更新:不幸的是,我沒有用任何建議的解決方案來解決問題(我很感激)。 我最終只是復制文件,然后還原初始提交。 然后,我將文件復制回原始目錄。 最后,我這次使用包含的.gitignore文件將其重新推送。

首先使用以下命令取消跟蹤所有現有文件:

git rm -r-緩存

然后更新您的.gitignore並再次提交/推送。

有幾種方法可以做到這一點,例如:

  • 使用git checkout -b <newbranch>轉到新分支,並在本地刪除文件
  • 使用git commit --amend或將其作為新提交推送
  • 回到您的master branch
  • 然后您可以添加.gitignore並提交

其他方式:

  • 使用git revert <commitId>還原提交(這將創建一個新的提交,該提交將完全刪除該提交)
  • 再次添加提交(例如,使用git cherry-pick <commitId>
  • 將文件添加到.gitignore
  • 提交這個新的提交

第三種方法是使用

git rm --cached <file> 在這里有詳細記錄。

讓我知道您是否需要其他信息。

PS:始終使用git status驗證您的提交

將您要忽略的路徑添加到.gitignore

然后通過執行以下命令從索引中刪除文件來停止跟蹤指定路徑的文件:

git rm --cached <file_path>

下次提交並推送將刪除指定路徑下的文件。

好。 以下是我將遵循的策略。 在此之前,從您的項目中刪除.gitignore。 現在,您的工作樹和臨時區域將很干凈。 本地和遠程倉庫都將具有.aux文件。

步驟1:從本地存儲庫中刪除最后一個提交。

git reset --soft head~1 

這將刪除最后的提交,這將有效地將您的.aux文件從提交區域移至暫存區域。

步驟2:將本地存儲庫強行推入遠程Bitbucket存儲庫。

git push -f origin master

在這一點上,如果您檢查您的位桶存儲庫,您會發現先前的提交已被刪除。 因此,一半的損害得以恢復。

步驟3:將所有暫存區文件都帶到工作區。

git reset head

步驟4:.gitignore添加到項目中。

步驟5:執行git status來檢查您是否可以看到被忽略的文件。 我確定您不會看到它們。 但是,您將看到所有想要早些提交但與不需要的文件一起提交的有用文件。

步驟6:將所有工作目錄文件添加到暫存區,提交並推送到遠程倉庫。

git add .
git commit -m "message"
git push origin master

暫無
暫無

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

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