【问题标题】:Performed HARD Reset on Git But Files are still Staged在 Git 上执行硬重置,但文件仍处于暂存状态
【发布时间】:2020-07-07 01:29:29
【问题描述】:

我正在使用 AWS SageMaker,但我不知道 EC2 为我添加到 .gitignore 的 .csv 文件创建了一个检查点,因为它的大小。因此,我不小心添加了要提交的检查点文件。

为了从暂存中删除文件,我通过执行git reset HEAD --hard 执行了硬重置。

我收到以下回复:

HEAD is now at c2770a8 add updates

当我执行git status 时,我被告知如下:

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

于是我提交了git push origin master,遇到如下错误:

Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (15/15), 61.39 MiB | 5.80 MiB/s, done.
Total 15 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: cee6ca9f888bed2a49b7bbd5de9edb1a
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File data/.ipynb_checkpoints/traffic_crashes-checkpoint.csv is 212.62 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/Morgan-Sell/Chicago-Traffic-Risk.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/Morgan-Sell/Chicago-Traffic-Risk.git'

(1) 为什么重置没有清除我的暂存?

(2) 我怎么知道c2770a8对应的是什么?

谢谢!

【问题讨论】:

    标签: linux git github command-line


    【解决方案1】:

    您遇到的问题是您的问题文件已经提交。将文件添加到 .gitignore 不会将其从提交中删除。 git reset --hard HEAD(这就是你应该如何编写它,在参数之前带有选项)也不会删除已经提交的文件;它将工作树和索引重置为指定的提交。由于提交已经包含问题文件,因此您没有更改其中的任何内容。

    您可能想要做的是git reset --soft HEAD^,假设最新的提交是您添加问题文件的那个。这将撤消您最近的提交并保留所有文件。然后,您可以运行 git reset data/.ipynb_checkpoint 以删除该目录中的所有暂存文件,然后再次提交。

    如果您在之前的提交中添加了问题文件,那么您需要执行git rebase -i COMMIT^,其中COMMIT 是添加问题文件的提交,然后将问题提交标记为edit 而不是pick,保存并退出您的编辑器。然后,当 Git 停止时,运行 git rm -r --cached data/.ipynb_checkpoints && git commit --amend --no-edit && git rebase --continue 这将删除文件并完成 rebase。

    【讨论】:

    • 添加到@bk2204 的答案:您的暂存已清除:您可以看到git status 没有提到暂存文件以供提交。
    猜你喜欢
    • 1970-01-01
    • 2014-11-04
    • 2011-06-26
    • 2011-03-07
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2014-05-27
    相关资源
    最近更新 更多