欢迎来到天天文库
浏览记录
ID:37800970
大小:175.91 KB
页数:7页
时间:2019-05-31
《10.7 维护与数据恢复》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、10.7维护与数据恢复维护与数据恢复有的时候,你需要对仓库进⾏清理-使它的结构变得更紧凑,或是对导⼊的仓库进⾏清理,或是恢复丢失的内容。这个⼩节将会介绍这些情况中的⼀部分。维护Git会不定时地⾃动运⾏⼀个叫做“autogc”的命令。⼤多数时候,这个命令并不会产⽣效果。然⽽,如果有太多松散对象(不在包⽂件中的对象)或者太多包⽂件,Git会运⾏⼀个完整的gitgc命令。“gc”代表垃圾回收,这个命令会做以下事情:收集所有松散对象并将它们放置到包⽂件中,将多个包⽂件合并为⼀个⼤的包⽂件,移除与任何提交都不相关的陈旧对象。可以像下⾯⼀样⼿动执⾏⾃动垃圾回收:$gitgc
2、--auto就像上⾯提到的,这个命令通常并不会产⽣效果。⼤约需要7000个以上的松散对象或超过50个的包⽂件才能让Git启动⼀次真正的gc命令。你可以通过修改gc.auto与gc.autopacklimit的设置来改动这些数值。gc将会做的另⼀件事是打包你的引⽤到⼀个单独的⽂件。假设你的仓库包含以下分⽀与标签:$find.git/refs-typef.git/refs/heads/experiment.git/refs/heads/master.git/refs/tags/v1.0.git/refs/tags/v1.1如果你执⾏了gitgc命令,refs⽬录中将
3、不会再有这些⽂件。为了保证效率Git会将它们移动到名为.git/packed-refs的⽂件中,就像这样:$cat.git/packed-refs#pack-refswith:peeledfully-peeledcac0cab538b970a37ea1e769cbbde608743bc96drefs/heads/experimentab1afef80fac8e34258ff41fc1b867c702daa24brefs/heads/mastercac0cab538b970a37ea1e769cbbde608743bc96drefs/tags/v1.0958519
4、1f37f7b0fb9444f35a9bf50de191beadc2refs/tags/v1.1^1a410efbd13591db07496601ebc7a059dd55cfe9如果你更新了引⽤,Git并不会修改这个⽂件,⽽是向refs/heads创建⼀个新的⽂件。为了获得指定引⽤的正确SHA-1值,Git会⾸先在refs⽬录中查找指定的引⽤,然后再到packed-refs⽂件中查找。所以,如果你在refs⽬录中找不到⼀个引⽤,那么它或许在packed-refs⽂件中。注意这个⽂件的最后⼀⾏,它会以^开头。这个符号表⽰它上⼀⾏的标签是附注标签,那⼀⾏是附注标签指
5、向的那个提交。数据恢复在你使⽤Git的时候,你可能会意外丢失⼀次提交。通常这是因为你强制删除了正在⼯作的分⽀,但是最后却发现你还需要这个分⽀;亦或者硬重置了⼀个分⽀,放弃了你想要的提交。如果这些事情已经发⽣,该如何找回你的提交呢?下⾯的例⼦将硬重置你的测试仓库中的master分⽀到⼀个旧的提交,以此来恢复丢失的提交。⾸先,让我们看看你的仓库现在在什么地⽅:$gitlog--pretty=onelineab1afef80fac8e34258ff41fc1b867c702daa24bmodifiedrepoabit484a59275031909e19aadb7c92
6、262719cfcdf19aaddedrepo.rb1a410efbd13591db07496601ebc7a059dd55cfe9thirdcommitcac0cab538b970a37ea1e769cbbde608743bc96dsecondcommitfdf4fc3344e67ab068f836878b6c4951e3b15f3dfirstcommit现在,我们将master分⽀硬重置到第三次提交:$gitreset--hard1a410efbd13591db07496601ebc7a059dd55cfe9HEADisnowat1a410efthirdco
7、mmit$gitlog--pretty=oneline1a410efbd13591db07496601ebc7a059dd55cfe9thirdcommitcac0cab538b970a37ea1e769cbbde608743bc96dsecondcommitfdf4fc3344e67ab068f836878b6c4951e3b15f3dfirstcommit现在顶部的两个提交已经丢失了-没有分⽀指向这些提交。你需要找出最后⼀次提交的SHA-1然后增加⼀个指向它的分⽀。窍门就是找到最后⼀次的提交的SHA-1-但是估计你记不起来了,对吗?最⽅便,也是最常⽤的⽅法,
8、是使⽤⼀个名叫gitre
此文档下载收益归作者所有