您的位置:首页 > 编程语言

dpkg设置hold不被升级;Git历史版本穿梭(涉及GitHub相关操作);

2014-07-30 14:47 260 查看
dpkg-reconfigure
    重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提供了一个统一的配制界面)。你能够重新配制 debconf 它本身,如你想改变它的前端或提问的优先权。例如,重新配制 debconf,使用一个 dialog 前端,简单运行:dpkg-reconfigure –frontend=dialog debconf (如果你安装时选错了,这里可以改回来哟:)

echo " hold" | dpkg --set-selections
设置 的状态为 hlod (命令行方式)

dpkg --get-selections ""
取的 的当前状态 (命令行方式)

apt-get upgrade [-u]

升级所以已经安装的包裹为最新可用版本。不会安装新的或移除老的包裹。如果一个包改变了倚赖关系而需要安装一个新的包裹,那么它将不会被升级,而是标志为 hold。apt-get update 不会升级被标志为 hold 的包裹 (这个也就是 hold 的意思)。请看下文如何手动设置包裹为 hold。我建议同时使用 '-u' 选项,因为这样你就能看到哪些包裹将会被升级。





------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

younghz原创,转载请注明出处:http://blog.csdn.net/u012150179/article/details/24889109

本篇博文主要说明两个问题:

1、  Git作为版本控制系统,那么他就应该具备在各次提交之间穿梭的能力,这里首先就先说恢复到历史提交的方法,也就是roll back的能力。

2、  滚到历史提交我又想回来怎么办?第二就说这个问题。

3、  深化说明在1中使用到的命令。

 

 

1、

首先,看一下版本库中的分支游标master的内容:



也就是最新commit 的ID。

下面的.git 目录下的HEAD就是是master的一个指向。

既然要回滚,就要知道想要回到的commit的ID,通过:

git log –oneline简化显示:



所谓的回滚其实就是将分支游标master指向之前的提交,重置命令git reset 上场:

git reset --hard commit-ID

即可。

 

2、

继续问题2,滚到历史提交又想回来的问题。

首先问题出来了,回去的话你得有commit id才行啊,可是经过上面的步骤你在执行git log的话只能找到回滚到的commit以及之前的记录。

这是.git目录下的另一个目录可以隆重登场了,看logs目录:



这个就是提交的历史记录,由于我并未执行git reset,所以你看见的记录最新commit id和master所指向的一致。

上恢复重置的命令 git reflog:

先用这个命令看看前四次log记录:



使用git reset重置到master@{2}:



查看当前commit 记录,重置成功:



现在我要回到重置之前的状态,首先找到重置前的master指向的commit的id:



然后执行重置:



继续查看commit记录,成功:

 


补充:若你的提交已经push到了远程库中,重置后的master指向若和远程库中不一致,那么会阻止push。以GitHub为例,出现下面:



这时你只能强制push:



这种操作在多人协同的库中谨慎使用。

 

3、git reset进阶。

git reset --hard <commit> --- 执行123,即将master、暂存区、工作区全部重置

git reset --soft <commit> --- 只执行1,也就是指修改引用的指向,不修改暂存区、工作区

git reset --mixsd <commit>(git reset <commit>) --- 执行12

 


注:<commit>不写的话默认为HEAD,HEAD^指HEAD的父提交,否则都是用master@{n}表示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: