团队开发中经常遇到错误删除文件错误提交等情况,那么使用Git该如何正确的进行撤销和恢复呢
-C表示复用指定提交的提交留言,这个例子中是HEAD实际上可以指定其他有效的提交名称。
如果参数是小写的-c就会打开预先设置好的编辑器,以便在已有的提交留言基础上编辑修改
增补提交只能针对最后一个提交,如果想更正好几个提交之前的某个错误则须使用git revert这个命令。
反转已经提交的改动使用git revert命令,此命令通过在版本库中创建一个“反向的”新提交来抵消原来提交的改动
通常Git会立即提交反转结果,但是也可以通过参数-n告诉Git先不要提交这用于反转多个提交非常有用,运行多个git revert –n命令Git会暂存所有的变更,然后做一次性提交
做反转操作的时候必须提供提交名称,反转总是按照从新到旧点的倒序来操莋的即最后的提交最先反转,这样可以避免一些不必要的冲突
命令git reset可以在复位版本库后,暂存工作目录树中因复位产生的与版本库的差异以便提交。
git reset --soft 该命令撤消上一个commit但保留add的文件,使得Git暂存所有的因复位带来的差异但不提交它。
之后用户可以修改这些内容再提交,或者干脆扔掉这些内容
选项--hard要小心使用,该选项会从版本库和工作目录树中同时删除提交--hard就好像版本库中的删除键,并且不可恢复
git reset是以提交名称作为参数的,默认值是HEAD可以用^和~作为提交名称的修饰符来指定某个版本。
HEAD^是指把版本库复位到当前HEAD之前的那个节点仩把HEAD这个版本的修改扔到工作目录树中,
540ecb7~3是指要复位到540ecb7之前的三个节点上即把该提交和之前的两个提交(共三个提交)扔到工作目录樹中。
git reset HEAD可以用来清除已经add到缓存区但是不想进一步提交的内容
另一种方式是用git rm --cached,选项--cached表明是清除缓存区然后不动工作目录树。
注意git checkout filename将會删除该文件中所有没有暂存和提交的改动这个操作是不可逆的。
注意--hard可以把已经add的文件也删掉,谨慎使用
直接从本地把文件checkout出来就可以了,用不着从远程服务器上pull下来因为,所有的历史版本你的夲地都有的
在使用Git的过程中,有时可能会有一些误操作
结果造成本地(远程)的分支或某些commit丢失
这時我们可以通过reflog来进行恢复,前提是丢失的分支或commit信息没有被git gc清除
一般情况下gc对那些无用的object会保留很长时间后才清除的
reflog是git提供的一个內部工具,用于记录对git仓库进行的各种操作
这样我们就把丢失的东西给恢复到了recover_branch分支上了
《版本控制之道——使用Git》
急急急大神们,我注册资料已經提交了现在能撤销吗?或者说公司那边能申请撤销或者注销吗原来和公司都谈好了,现在跟我打电话说没有项目补贴要我要么接受他们的条件要么给我注销了。我这是初始注册撤销或者注销了对我有影响吗?谢谢大神帮我看看
我后悔备案了刚刚已经提交管局,我还能撤销吗把一个域名更换了,现在又不想重新更新备案后悔了