我正在学习git类(class),想提一下丢失的引用在运行gitgc之前并没有真正丢失。但是验证了一下,发现不是这样的。即使在运行gitgc--prune=all--aggressive之后,丢失的引用仍然存在。显然我误会了什么。在类(class)中说错话之前,我想弄清楚我的事实!这是一个示例脚本,说明了效果:#!/bin/bashgitinit#add10dummycommitsforiin{1..10};dodate>foo.txtgitaddfoo.txtgitcommit-m"bump"foo.txtsleep1done;CURRENT=$(gitrev-parseHEAD)e
我正在学习git类(class),想提一下丢失的引用在运行gitgc之前并没有真正丢失。但是验证了一下,发现不是这样的。即使在运行gitgc--prune=all--aggressive之后,丢失的引用仍然存在。显然我误会了什么。在类(class)中说错话之前,我想弄清楚我的事实!这是一个示例脚本,说明了效果:#!/bin/bashgitinit#add10dummycommitsforiin{1..10};dodate>foo.txtgitaddfoo.txtgitcommit-m"bump"foo.txtsleep1done;CURRENT=$(gitrev-parseHEAD)e
是否可以查看远程的reflog?也就是说,我想知道gitreflog在另一台远程机器上的输出是什么。请注意,我不是在请求远程跟踪分支(例如origin/master)的reflog,我是在请求reflog在另一台机器上说的内容. 最佳答案 如果远程机器是github存储库,首先使用Github的事件API检索提交的SHA。curlhttps://api.github.com/repos///events识别不再存在于任何分支中的孤立提交ID的SHA。接下来,使用Github的RefsAPI创建一个指向孤立提交的新分支。curl-i-
是否可以查看远程的reflog?也就是说,我想知道gitreflog在另一台远程机器上的输出是什么。请注意,我不是在请求远程跟踪分支(例如origin/master)的reflog,我是在请求reflog在另一台机器上说的内容. 最佳答案 如果远程机器是github存储库,首先使用Github的事件API检索提交的SHA。curlhttps://api.github.com/repos///events识别不再存在于任何分支中的孤立提交ID的SHA。接下来,使用Github的RefsAPI创建一个指向孤立提交的新分支。curl-i-
我可以重新登录一个特定的分支吗?gitreflog显示存储库中的所有历史记录。但我想检查一个特定分支的历史,比如production。有没有办法做到这一点? 最佳答案 如thedocumentation中所述,gitreflog采用Action动词(称为)和可选修饰符。该操作默认为show,其可选修饰符是要显示的引用名称。默认显示对HEAD的操作。(大多数,但不是全部,“日常”命令在HEAD上运行和/或通过gitreflog运行,以便在任何其他引用上运行。因此,production显示所有历史的说法是事实上是错误的——但它确实显示了
我对我的数据有点偏执,包括恢复数据的能力。Gitreflog数据在30天后被删减。有没有办法设置它,以便无限期地维护和保存reflog数据?这样做有什么主要优势或劣势(除了空间或速度方面的考虑)? 最佳答案 警告:reflog是本地的,不会通过推/pull操作发送/接收。缺点:reflogs可能会导致(否则)无法访问的快照(以及随后的blob)被保留,使您的存储库增长到比预期更大的大小。看gc.reflogexpireunreachable对于可能在这方面有帮助的东西。两个配置设置管理reflog条目的过期:gc.reflogexp
免责声明:此问题仅供引用,并不代表我遇到的实际问题。我只是为了解决问题而尝试解决问题(因为我喜欢解决问题,而且我知道你也喜欢)。所以我在玩git,试图使修改后的提交过期。我的reflog看起来像这样:4eea1cdHEAD@{0}:commit(amend):amendcommitff576c1HEAD@{1}:commit:test:bar5a1e68aHEAD@{2}:commit:test:fooda8534aHEAD@{3}:commit(initial):initialcommit这意味着我进行了两次提交(da8534a和5a1e68a),然后是我用4eea1cdff576c
当我使用gitreflog之类的东西时,我无法输入命令。我不知道你在看什么,因为我对bash比较陌生。那么,在运行reflog后我可以使用什么术语返回运行git命令? 最佳答案 按q退出,您将回到正常的shell。CTRL+C也可以。 关于git-在reflog或commit等之后转义gitbash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7842727/
是否可以检查对特定文件的所有提交的gitreflog。我提交了文件foo.txt,现在它不再显示在git历史中了gitlogfoo.txt我想搜索reflog以找到对该文件的所有提交,这样我就可以找到我“丢失的”提交。 最佳答案 在搜索答案时遇到这个问题,这很简单:gitreflog--$PATH,它将包括修改和其他不可见的操作(但要注意,reflog将被由gc修剪) 关于git-查询gitreflog以获取对特定文件的所有提交,我们在StackOverflow上找到一个类似的问题:
手册页说log显示提交日志,reflog管理reflog信息。reflog信息到底是什么?它有哪些是日志没有的?日志似乎更详细。 最佳答案 gitlog显示当前HEAD及其祖先。也就是说,它打印HEAD指向的提交,然后是它的父项,它的父项,等等。它通过递归查找每个提交的父项来遍历repo协议(protocol)的祖先。(实际上,一些提交有多个父项。要查看更具代表性的日志,请使用类似gitlog--oneline--graph--decorate的命令。)gitreflog根本不遍历HEAD的祖先。reflog是HEAD指向的提交的有