git reflog expire手动使用Git的reflogs是“推送”存储的基本机制(即,名称不只是stashor stash@{0}而是stash@{1},stash@{2}等等的任何存储)。只要引用发生更改,reflog就会记录引用的先前值。(我将在下面定义引用,并在那里完成reflog的定义。)
大多数引用日志条目到期靠自己,通过配置gc.reflogExpire和gc.reflogExpireUnreachable设置(同时看到该git config文档和该git reflog文档)。refs/stash但是,该引用很特殊:默认情况下,其条目永不过期,而不是30或90天后过期。
您可以git reflog expire手动运行并覆盖其中的任何一个。例如:
git reflog expire --expire-unreachable=40.days refs/stash
Run Code Online (Sandbox Code Playgroud)
告诉Git过期至少40天的所有隐藏条目到期,所有这些条目始终不可访问(请参见下文)。添加--dry-run选项以查看哪些会过期,而实际上不会过期……尽管这里存在一个小缺陷:它不会打印其号码,即,它从不说要扔,例如stash@{17}。
Git的引用是分支名称,标记名称,远程跟踪分支名称以及Git具有的所有其他名称的概括。引用只是将名称(如master或v1.2或)转换stash为Git的内部哈希ID之一。
分支名称只是其全名以开头的引用refs/heads/。标签名称只是参考,其全名以开头refs/tags/。远程跟踪分支名称是一个全名以其开头refs/remotes/(然后具有远程名称和另一个斜杠)的引用。
一些参考名称,尤其是分支,经常更改。例如,每次添加新的提交时,master分支(实际上是分支)refs/heads/master都会更改master。每当Git将存储的哈希值替换为引用时,它(取决于是否打开reflog)都可以保存先前的哈希值。这些保存的条目是您的引用日志。
每个reflog条目都有一个时间戳。Reflog条目最终会过期并过期,因此您不会出现成千上万个reflog条目。
refs/stash分支名称通常以向前的方式移动,例如一次提交一次。也就是说,我们向分支添加新的提交,而该分支上的所有旧提交仍在该分支上。有时,我们会以“快速”前进的方式在网上提取所有提交并一次添加它们:所有新提交都在分支上,而所有旧提交也都在分支上。分支名称指向分支上的最尖端提交,o在此图中最右边:
...--o--o--o <-- branch
Run Code Online (Sandbox Code Playgroud)
我们添加了更多提交,分支名称仍然指向提示:
...--o--o--o--o--o--o <-- branch
Run Code Online (Sandbox Code Playgroud)
但是由于每个提交都指向其父提交,因此所有这些提交都是可到达的。
但是,有时我们会故意删除一个提交,然后用另一个替换。例如,如果我们有未推送的提交,则可以使用git commit --amend或git rebase -i进行一些更改。当我们这样做时,旧的就不会消失,只会得到。相反,它们被推到一边:
...--o--o--X <-- branch
Run Code Online (Sandbox Code Playgroud)
变成:
X ...... branch@{1}
/
...--o--o--Y <-- branch
Run Code Online (Sandbox Code Playgroud)
Y我们的替代品在哪里X?
请注意,的父提交Y不是X,而是X的父。这意味着承诺X是不从可到达Y。
可访问对象和不可访问对象的两个单独的“ reflogExpire”配置项指的是可以通过从引用的当前值开始(对于名为的分支branch,即)然后refs/heads/branch向后工作来找到的提交。提交Y是可到达的,os 也可以到达,但X不是。如果有一个引用日志条目指向较早的一个oS,它可到达,但branch@{1}点X是不可达。
Git的设计师从本质上认为,无法实现的提交不那么值得,因此他们的reflog条目应尽快过期。因此,对于不可达条目,默认值为30天,对于可达条目,默认值为90天。
refs/stash但是,该参考文献根本无法正常进行。相反,它指向当前存储区,这是一种“袋子”:一次提交-实际上至少两次提交,有时更多次提交-不在任何分支上(我称之为“存储袋”;请参阅如何从“ git stash save --all”中恢复?)。这反过来意味着没有以前是从电流可达,永远!因此,每个存储刷新日志条目始终无法访问。stash@{n}refs/stash
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |