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