我在推送一个本地git仓库到Bitbucket时,不小心忘记了包含一个.gitignore文件,结果导致大量不需要的.aux文件出现在远程仓库中。
直接在Bitbucket上删除它们最多也要花很长时间。有没有什么好的方法在本地完成这个操作?或者有没有一个安全的方法可以基本上“重新开始”,这样我就可以包含.gitignore文件了?
而且,不管什么原因,.aux文件在我的本地文件中找不到。它们只是在我做了最初的推送后出现在Bitbucket上。
我是git的新手,所以明确的解决方案特别受欢迎。
**UPDATE:**不幸的是,我没有设法用任何建议的解决方案来解决这个问题(我很感激)。我最终只是复制了我的文件,然后恢复了最初的提交。然后我把文件复制回原始目录。最后,我用这次包括的.gitignore文件重新推送了它们。
5条答案
按热度按时间cwtwac6a1#
首先使用以下命令取消跟踪所有现有文件:
git rm -r -缓存
然后更新您.gitignore并再次提交/推送。
fivyi3re2#
将要忽略的路径添加到
.gitignore
然后通过执行以下命令从索引中删除指定路径下的文件,从而停止跟踪该文件:
下一次提交和推送将删除指定路径中的文件。
tvokkenx3#
好的。下面是我将遵循的策略。在那之前,从你的项目中删除.gitignore。现在,你的工作树和临时区域将是干净的。并且本地和远程存储库都将有.aux文件。
**步骤1:**从本地存储库中删除最后一次提交.
这将删除最后一次提交,这将有效地将您的.aux文件从提交区域移动到临时区域。
**步骤2:**将本地存储库强制推入远程位存储库。
此时,如果你检查你的bitbucket repo,你会发现你之前的提交被删除了,所以,一半的损坏被恢复了。
**步骤3:**将所有临时区域档案移至工作区域。
**步骤4:**将
.gitignore
加入至项目。**第5步:**执行
git status
检查是否可以看到忽略的文件。我确信你不会看到它们。但是,你会看到所有你想要的文件,你希望提交,但与不需要的文件沿着提交。**步骤6:**将所有工作目录文件添加到临时区域,提交这些文件并推送到远程存储库。
y53ybaqx4#
有几种方法可以做到这一点,例如:
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
验证您的提交xoefb8l85#
如果你想从git repo中清除不需要的文件,以最小化空repo的大小,并将它们从历史记录中删除,就像从来没有发生过一样,这是可能的,过滤器选项,但它会重写整个历史记录,以任何你想要的起点,每一个删除的提交将有一个新的提交哈希,你将不得不强行推送整个repo。这意味着他们推送了所有内容,并且没有在本地提交新的更改。他们必须在本地删除repo,而不仅仅是整个本地克隆文件夹的分支
你可以重新创建repo,强制推送,然后让他们重新克隆。
“Git filter-branch”,但这里有一些初始信息
https://torchbox.com/blog/how-remove-unwanted-files-your-git-repository/
在你玩像这样的高级操作之前,我建议你100%克隆备份到你账户中的另一个源,像这样的URL只是为了演示,你显然需要使用你的
是的,扩展名是文件夹名称的一部分,因为它是一个空的存储库,因为存储在服务器上。
rm -rf
是Linux/bash风格的命令,以强制删除文件夹,所以如果你是从Windows CMD工作,它将是rmdir