删除未推送的 git 提交,但保留所有本地工作

Tom*_*Tom 3 git git-commit

我的本地目录中有一些大文件,包含在我认为阻止我的 git push 继续进行的提交中:

Counting objects: 194, done.
Delta compression using up to 4 threads.
Connection to bitbucket.org closed by remote host.
fatal: The remote end hung up unexpectedly
Compressing objects: 100% (190/190), done.
error: pack-objects died of signal 13
error: failed to push some refs to 'myrepo'
Run Code Online (Sandbox Code Playgroud)

至少,我相当确定是文件的大小导致推送失败。我只想删除提交的记录,这样我就可以返回并为这些文件添加一个 .gitignore,提交并再次推送。

一个 git status 给出:

On branch master
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

可以删除提交,同时保留工作目录中的所有更改吗?我正在努力寻找一个似乎不涉及将我的存储库重置为来自 master 的较早提交的答案(我想保留我最近的所有本地工作!)。任何建议将不胜感激。

Gar*_*rwe 9

跑:

git reset origin/master 
Run Code Online (Sandbox Code Playgroud)

这会将基础提交移回原点/主节点,但将工作树保持原样。从这一点上,您可以添加您的.gitignore并进行新的提交。

提交仍将存在于您的本地存储库中,但不会是新提交的祖先,因此在您执行推送时不会传输。