如何用git推反flog?

zzlelutf  于 2023-06-20  发布在  Git
关注(0)|答案(3)|浏览(117)

有办法把reflog推到远程吗?这似乎是一件非常有用的事情,但我不知道怎么做。我设想的是像git push --include-reflogs这样的东西
最后,我希望远程设备在推送时有一个reflog的逐字副本。
我尝试使用--mirror,但是1)我不想从这个特定的远程删除任何分支,除非手动,2)它仍然没有复制reflog到远程。
有谁知道这是否/如何实现?

hs1ihplo

hs1ihplo1#

您真正想问的是,是否有一种方法可以绕过匿名(即未引用)提交对象及其树和blob,以用于备份目的。答案是不。匿名对象--只被你的reflog引用的对象--是本地仓库私有的。

  • 但是 *--你可以复制任何仓库的.git目录来做你想做的事情。如果源存储库忙碌(例如,提交正在发生,或垃圾收集或重新打包),那么您需要以一定的顺序复制.git目录中的文件和目录。这在很多地方都有解释,但其中一个例子是http://article.gmane.org/gmane.comp.version-control.git/147354('如果你想让你的rsync备份正常,你需要遵循一些顺序....')
tyu7yeag

tyu7yeag2#

你可以备份.git/logs,它将备份提交的引用(但不备份提交或文件本身)。
实际上,git将reflog的信息存储在.git/log目录下,你可以对它们做任何事情,比如用文本编辑器打开这个目录下的文件。如果您删除此目录,所有的reflog都会消失,如果您恢复它,reflog会回来。
据我所知,没有内置的方法来跟踪.git/logs。我尝试将.git/log移动到工作目录,并从.git目录创建一个符号链接。它可以工作,但不是很好,因为每次你做一个提交,HEAD移动,.git/logs/HEAD改变,那么你现在有一个未提交的更改。工作目录永远不会是干净的。

ohfgkhjo

ohfgkhjo3#

Git reflog跟踪单个Git仓库的HEAD更改。每个克隆都有自己的reflog。我不知道你会用一个共享的reflog做什么(远程帮助别人?)
如果您真的需要跟踪某人的reflog,您可以使用git reflog > dev1_reflog.txt将reflog内容转储到一个文件中,并共享dev1_reflog.txt(使用git add dev1_reflog.txt; git commit -m "Adding dev1_reflog"; git push)。

相关问题