有没有办法将 reflog 推送到遥控器?这似乎是一件非常有用的事情,但我不知道如何去做。我正在设想类似的东西git push --include-reflogs
最后,我希望遥控器在推送时拥有引用日志的逐字副本。
我尝试使用--mirror
,但是 1)我不想从这个特定的远程删除任何分支,除非手动删除,2)它仍然没有将 reflogs 复制到远程。
有谁知道是否/如何做到这一点?
您真正要问的是,是否有一种方法可以绕过匿名(即未引用)提交对象及其树和 blob 以用于备份目的。答案是否定的。匿名对象(仅由您的 reflog 引用的对象)对本地存储库是私有的。
但是——你可以复制.git
任何仓库的目录来做你想做的事。如果源代码库当时很忙(例如正在提交,或者垃圾收集或重新打包),那么您需要按.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 更改。每个克隆都有自己的 reflog。我不知道你会用共享的 reflog 做什么(远程帮助某人?)
如果您确实需要跟踪某人的 reflog,您可以将 reflog 内容转储到文件中并使用git reflog > dev1_reflog.txt
和共享dev1_reflog.txt
(使用git add dev1_reflog.txt; git commit -m "Adding dev1_reflog"; git push
)。