我通过在生产服务器上运行git pull将应用程序部署到生产服务器。
作为备份的一部分,我正在考虑只存储当前提交散列的想法,而不是复制所有文件。稍后,在恢复期间,我希望将存储库的本地版本从远程源恢复到保存的提交散列。理想情况下,它的行为就像我恢复了整个树一样,包括.git文件夹。
为了保存当前的提交散列,我考虑使用git log -1 --format=%H
为了恢复到特定的版本,我知道git checkout hash命令。不幸的是,此命令将存储库的工作副本从分支中分离出来。
是否有一个或一组命令可以将本地git存储库恢复到以前的状态(也就是以一种透明的方式进行进一步的更新)?因此,git pull会将工作副本更新为相应分支中的最新提交,并更新头指针等。
发布于 2014-03-14 18:31:49
您可以签出任何提交,但这不会将.git目录恢复到它以前的状态,并且“附加到相同的分支”根本没有意义。在git中,分支只是对提交的引用,它启动了一系列提交。你签出的提交有它自己的历史,但签出它会让你处于特殊的“分离头”状态(你不在任何分支的顶端,所以在顶部添加新的提交是没有意义的)。
发布于 2014-03-14 18:25:13
我知道git checkout hash命令。不幸的是,此命令会将存储库的工作副本从分支中分离出来
您可以获取分支并将其指向提交,允许您在问题主题中询问的“分支附件”:
$ git update-ref refs/heads/<branch> <hash>https://stackoverflow.com/questions/22380616
复制相似问题