是否有办法将refflog推到遥控器?这似乎是一件非常有用的事情,但我不知道怎么做。我想象的是git push --include-reflogs
最后,我希望遥控器在推送时能有一个不差字的refflogs副本。
我尝试使用--mirror
,但是1)我不想从这个特定的远程删除任何分支,除非手动,2)它仍然没有将refflogs复制到远程。
有谁知道这是怎么做到的吗?
您真正要问的是,是否有一种方法可以绕过匿名(即未引用)提交对象及其树和blob来进行备份。答案是否定的。匿名对象——只被你的reflog引用的对象——对本地的repo是私有的。
但是——你可以复制任何repo的.git
目录来做你想做的。如果源repo很忙(例如正在进行提交,或者正在进行垃圾收集或重新打包),那么您需要按照一定的顺序复制.git
目录中的文件和目录。这在很多地方都有解释,但一个例子是http://article.gmane.org/gmane.comp.version-control.git/147354(如果你想让你的rsync备份很好,你需要遵循一些订购…")
您可以备份.git/logs
,它将备份提交的引用(但不包括提交或文件本身)。
实际上,git将reflog
信息存储在.git/log
目录下,你可以对它们做任何事情,比如用文本编辑器打开该目录下的文件。如果您删除这个目录,所有的reflog
将消失,如果您恢复它,reflog
将回来。
据我所知,没有内置的方法来跟踪.git/logs
。我试图将.git/log
移动到工作目录,并从.git
目录进行符号链接。它可以工作,但不是很好,因为每次你做一个提交,HEAD
移动和.git/logs/HEAD
更改,然后你现在有一个未提交的更改。工作目录永远不会被清理。
Git reflog跟踪单个Git存储库的HEAD更改。每个克隆体都有自己的refg。我不知道你会用一个共享的reflog做什么(远程帮助别人?)
如果你真的需要跟踪某人的reflog,你可以使用git reflog > dev1_reflog.txt
转储reflog内容在一个文件中,并共享dev1_reflog.txt
(使用git add dev1_reflog.txt; git commit -m "Adding dev1_reflog"; git push
)。