5

有没有办法将 reflog 推送到遥控器?这似乎是一件非常有用的事情,但我不知道如何去做。我正在设想类似的东西git push --include-reflogs

最后,我希望遥控器在推送时拥有引用日志的逐字副本。

我尝试使用--mirror,但是 1)我不想从这个特定的远程删除任何分支,除非手动删除,2)它仍然没有将 reflogs 复制到远程。

有谁知道是否/如何做到这一点?

4

3 回答 3

8

您真正要问的是,是否有一种方法可以绕过匿名(即未引用)提交对象及其树和 blob 以用于备份目的。答案是否定的。匿名对象(仅由您的 reflog 引用的对象)对本地存储库是私有的。

但是——你可以复制.git任何仓库的目录来做你想做的事。如果源代码库当时很忙(例如正在提交,或者垃圾收集或重新打包),那么您需要按.git特定顺序复制目录中的文件和目录。这在各个地方都有解释,但一个例子是http://article.gmane.org/gmane.comp.version-control.git/147354('如果你希望你的 rsync 备份很好,你需要遵循一些命令。 ...')

于 2013-05-31T01:39:16.380 回答
3

简而言之,您需要的只是备份.git/logs

实际上,git 将reflog信息存储在.git/log目录下,您可以对它们进行任何操作,例如使用文本编辑器在该目录中打开文件。如果你删除这个目录,所有的都reflog消失了,如果你恢复它,它reflog就会回来。

据我所知,没有内置的方法来跟踪.git/logs. 我试图移动.git/log到工作目录并从.git目录到它的符号链接。它可以工作但不是很好,因为每次您进行提交、HEAD移动和.git/logs/HEAD更改时,您现在都有一个未提交的更改。工作目录永远不会干净。

于 2013-05-31T03:01:47.790 回答
0

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)。

于 2013-05-30T20:09:38.223 回答