有没有办法将reflog推送到远程?这似乎是一件非常有用的事情,但我不知道如何做到这一点。我想象的是git push --include-reflogs
最后,我希望遥控器在推送时有一份逐字记录的副本。
我尝试使用--mirror
,但1)我不想删除此特定遥控器的任何分支,除非手动,2)它仍然没有将reflog复制到遥控器。
有谁知道是否/如何做到这一点?
答案 0 :(得分:6)
你真正要问的是,有没有办法绕过匿名(即未引用的)提交对象及其树和blob用于备份目的。答案是否定的。匿名对象 - 仅由您的reflog引用的对象 - 对于本地存储库是私有的。
但是 - 你可以复制任何仓库的.git
目录来做你想要的。如果源仓库繁忙(例如,提交正在进行,或者是垃圾收集或重新打包),那么您需要按特定顺序复制.git
目录中的文件和目录。这在不同的地方解释,但一个例子是http://article.gmane.org/gmane.comp.version-control.git/147354('如果你希望你的rsync备份没问题,你需要关注一些
排序....')
答案 1 :(得分:2)
简而言之,您需要的只是备份.git/logs
。
实际上,git在reflog
目录下存储.git/log
信息,您可以对它们执行任何操作,例如使用文本编辑器在此目录中打开文件。如果您删除此目录,则所有reflog
都会消失,如果您将其恢复,reflog
将会恢复。
据我所知,没有内置的方法来跟踪.git/logs
。我试图将.git/log
移动到工作目录并从.git
目录创建一个符号链接。它工作但不是很好,因为每次执行提交时,HEAD
移动和.git/logs/HEAD
更改,那么您现在有一个未经修改的更改。工作目录永远不会干净。
答案 2 :(得分:0)
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
)。