从远程git仓库中删除不需要的文件

时间:2019-01-05 08:04:45

标签: git repository

当将现有的本地git存储库推送到Bitbucket时,我不小心忘记包含.gitignore文件。结果,大量不需要的.aux文件出现在远程存储库中。

直接在Bitbucket上删除它们最多将花费很长时间。在本地有什么好的方法吗?还是有一种安全的方法可以从本质上“重新开始”,以便我可以包含.gitignore文件?

此外,无论出于什么原因,在我的本地文件中都找不到.aux文件。我刚开始推送后,它们就出现在Bitbucket上。

我是git的新手,因此特别感谢明确的解决方案。

更新:不幸的是,我没有设法通过任何建议的解决方案解决问题(我很感激)。我最终只是复制文件,然后还原初始提交。然后,我将文件复制回原始目录。最后,我使用这次包含的.gitignore文件将它们重新推入。

4 个答案:

答案 0 :(得分:0)

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

git rm -r --cached

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

答案 1 :(得分:0)

执行此操作的方法很少,例如:

  
      
  • 使用git checkout -b <newbranch>转到新分支并在本地删除文件
  •   
  • 使用git commit --amend修改提交或将其作为新提交推送
  •   
  • 回到您的master branch
  •   
  • 然后您可以添加.gitignore并提交它
  •   

另一种方式:

  
      
  • 使用git revert <commitId>还原提交(这将创建一个新的提交,该提交将完全删除该提交)
  •   
  • 再次添加提交(例如,使用git cherry-pick <commitId>
  •   
  • 将文件添加到.gitignore
  •   
  • 提交此新提交
  •   

第三种使用方式

  

git rm --cached <file>   here有据可查。

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

PS:始终使用git status

验证提交

答案 2 :(得分:0)

将要忽略的路径添加到.gitignore

然后通过执行以下操作从索引中删除文件来停止跟踪指定路径的文件:

git rm --cached <file_path>

下一次提交和推送将删除指定路径下的文件。

答案 3 :(得分:0)

好的。以下是我将遵循的策略。在此之前,从您的项目中删除.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