Git-修改后的提交是否持久?

Git-修改后的提交是否持久?,git,git-amend,Git,Git Amend,在我的Git分支上,我创建了一个提交并推送。后来,我添加了对索引的更改,使用了git commit--amend,然后使用git push-f。我的新提交覆盖了分支上本地和远程的第一个提交 此时,我希望(或希望)原始提交不再存在,或者至少存在(可能在reflog中),但不再有父级,因此,一旦我运行GC,它将不再存在。但是,提交似乎仍然存在,其父级仍然完好无损。 (在本例中,我是通过Jira发现的,它将我链接到github上的重写提交) 为什么会这样?它将如何被删除?这是否意味着,每当我意外地将密

在我的Git分支上,我创建了一个提交并推送。后来,我添加了对索引的更改,使用了
git commit--amend
,然后使用
git push-f
。我的新提交覆盖了分支上本地和远程的第一个提交

此时,我希望(或希望)原始提交不再存在,或者至少存在(可能在reflog中),但不再有父级,因此,一旦我运行GC,它将不再存在。但是,提交似乎仍然存在,其父级仍然完好无损。 (在本例中,我是通过Jira发现的,它将我链接到github上的重写提交)


为什么会这样?它将如何被删除?这是否意味着,每当我意外地将密码推送到GitHub,然后使用
git commit--amend
git reset
,然后使用
git push-f
,提交就永远不会真正被删除

--prune=

修剪早于日期的松散对象(默认值为2周前,可由配置变量gc.prueexpire覆盖)
--prune=all
修剪松散对象,而不管其年龄大小<代码>--prune在默认情况下处于启用状态

因此,您可能希望运行git gc--prune=allgit 2.7(2015年第4季度)引入了一个关于“
git gc--prune=all
”的警告

参见(2015年10月14日)作者。
(于2015年10月20日合并)

文档/gc
:警告
——删减=
git gc
”在任何时候运行都是安全的,因为它具有内置的宽限期来保护由其他进程创建的对象,这些进程正在等待ref更新以将它们锚定到历史记录中。
为了在没有宽限期的情况下运行,用户必须确保 存储库处于静止状态

静态的:已在以下文件中提到:

您应该只在静态模式下运行
git prune
存储库——这有点像做一个文件系统
fsck
recovery:you 不希望在安装文件系统时执行此操作

因此,静止的意味着处于不活动或休眠的状态或时期

新文件提到:

--prune=all
修剪松散的对象,无论其年龄如何
除非您确切知道自己在做什么,否则不要使用
--prune=all

除非存储库处于静止状态,否则您将丢失新创建的未锚定到引用的对象,并最终损坏存储库。
默认情况下,
--prune
处于启用状态

修正后的承诺会持续吗?对看见