我搜索了堆栈溢出但我无法得到正常的答案。我把我的巨大变化从暂存区推到了存储库。中间出现错误。现在,当我输入git status或git status -s时,它显示没有更改,但是当我转到存储库master时,它不会显示任何提交。
答案 0 :(得分:0)
Git推送提交,而不是单个文件。
对此有一堆优化(取决于协议),但原理是相同的:git要么完全推送一个或多个提交,然后它们出现在遥控器上,要么失败,所以它们不是出现在遥控器上。
在任何一种情况下,您的本地存储库都不受影响。您的提交和您的(本地)分支不变。唯一确实改变的是,如果你的推送成功,你的远程跟踪分支将更新,因为你的git知道他们的git接受了你的推送提交。
如果您在开始git push
尝试之前已在本地提交了所有内容,则git status
将不会显示任何内容。如果您的git push
失败 - 无论是因为推送时网络故障,还是因为远程拒绝推送 - git status
仍仍未显示任何内容。那不重要!重要的是重试推送(如果推送应该成功),或者删除和/或替换你不想再推送的提交(如果推送应该失败)。
To"删除"提交, 1 您可以使用git reset
或git rebase -i
。要替换最末端提交,可以在使用git commit --amend
和/或git add
更新暂存区域中的文件后使用git rm
。 (顺便说一下,您最近提交的所有文件仍在暂存区域中,它们与您刚刚提交的文件中的文件相同,因此git status
对它们一无所知。 )
1 提交实际上不会消失,至少不会立即消失,因此"删除"。这些"删除"提交通常通过两个reflog(一个用于HEAD
,一个用于当前分支)保持30天(尽管这是可配置的)。
同样适用于git commit --amend
:它只是将提示最多的提交移到一边并进行新的提示 - 大多数提交,其父级与刚刚移动的提交相同。移动提交与使用git reset
或git rebase -i
的reflog相同。