【问题标题】:how to stop pushing deleted files to remote repo?如何停止将已删除的文件推送到远程仓库?
【发布时间】:2014-05-19 05:07:41
【问题描述】:

我提交了一些文件并尝试将它们推送到远程存储库。 但是,我在列表中发现了一个大视频文件并终止了推送。 然后我尝试从列表中删除文件并再次推送。

$git commit -m "comments" -a
$git push origin my_branch
... # I found mp4 file here and terminated push
$git rm --cached path/to/mp4
$git commit -m "comments" -a
$git push origin my_branch 

问题
git 仍然试图将 mp4 文件推送到 repo。

问题 如何避免将删除的文件推送到远程仓库?

PS
我也试过git rm path/to/mp4,文件已从我的目录中删除,但 git 仍然试图将文件推送到 repo

【问题讨论】:

  • 使用 git rm 执行 git checkout 删除文件并再次推送文件。这肯定会删除文件。

标签: git github


【解决方案1】:

从这些命令看来,视频文件仍在提交历史记录中。

假设您没有进行其他提交,请尝试以下操作。如果你只是稍微调整一下。

尝试恢复到上一次提交

git reset --soft HEAD~1

然后执行 git status 看看是否看到文件

如果你这样做。然后删除它并重新提交

git commit -c ORIG_HEAD

【讨论】:

  • 谢谢,在我尝试解决方案之前,我可以知道解决方案会回滚我的更改吗?
  • Reset --soft 在您提交之前不应回滚任何内容。它会将您返回到提交之前的状态。该提交中的所有更改都将显示在暂存区域中。
  • 如果您不确定,只需在另一个文件夹中初始化一个 git repo 并进行实验。或者创建一个新分支并在那里尝试该命令。即使出现问题,reflog 也是您的朋友
【解决方案2】:

如果历史记录大于一次提交,并且 mp4 大文件已在较旧的提交中进行版本控制,您可以考虑使用以下命令清理您的存储库的历史记录:

使用git gc --aggressive --prune=now(如explained here)进行清理

要“回滚”,只需在当前本地 repo 的本地克隆上尝试这些操作(因此,第二个本地 repo,第一个的克隆)。如果最终结果不好,您可以在第一个(未触及的)repo 中恢复。

【讨论】:

    猜你喜欢
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 2018-09-13
    • 2014-10-21
    • 2017-06-17
    • 2012-05-25
    相关资源
    最近更新 更多