❶ git相关 请教如何恢复版本库
通过使用Git版本恢复命令reset,可以回退版本。reset命令有3种方式:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容以下是一些reset的示例:#回退所有内容到上一个版本gitresetHEAD^#回退a.py这个文件的版本到上一个版本gitresetHEAD^a.py#向前回退到第3个版本gitreset–softHEAD~3#将本地的状态回退到和远程的一样gitreset–hardorigin/master#回退到某个版本gitreset057d#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commitgitrevertHEAD如果我们某次修改了某些内容,并且已经commit到本地仓库,而且已经push到远程仓库了这种情况下,我们想把本地和远程仓库都回退到某个版本,该怎么做呢?前面讲到的git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化这样,即时本地reset了,但如果再git pull,那么,远程仓库的内容又会和本地之前版本的内容进行merge这并不是我们想要的东西,这时可以有2种办法来解决这个问题:直接在远程server的仓库目录下,执行git reset –soft 10efa来回退。注意:在远程不能使用mixed或hard参数在本地直接把远程的master分支给删除,然后再把reset后的分支内容给push上去,如下:#新建old_master分支做备份gitbranchold_master#push到远程gitpushoriginold_master:old_master#本地仓库回退到某个版本gitreset–hardbae168#删除远程的master分支gitpushorigin:master#重新创建master分支gitpushoriginmaster关于git删除远程分支一不小心把本地的临时分支push到server上去了,想要删除。一开始用git branch -r -d origin/branch-name不成功,发现只是删除的本地对该远程分支的track,正确的方法应该是这样:git push origin :branch-name冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。
❷ linux git 怎样退回到指定版本
无论windows还是linux或其他操来作系自统,git版本管理的操作命令都是一致的,没有任何区别。退回到指定版本可使用revert反转提交命令,git revert用一个新提交来消除一个历史提交所做的任何修改。revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新。
❸ git回退到上一个版本怎么回退回去
git 最小单位是一个提交,因此是不能单独回退某个文件的。当然,如果有个提交只修改了一个文件,就可以回退,git revert这个提交就可以了。
❹ 怎么通过idea让git回到以前版本
需要回滚的commit之后的信息在本地和远程都彻底消灭了(慎重,确保你真的不要这些信息了哦)。而你需要回滚的commit之前的信息全部保存了,只不过是分支名字换了一下,你也可以把分支改名回来。这时远程的新分支还不存在,你之后又改动commit并且push之后,远程也和本地同步上了。
❺ git 怎么把一个文件回退成上一个版本
git最小单位是一个提交,因此是不能单独回退某个文件的。当然,如果有个提交只修改了一个文件,就可以回退,gitrevert这个提交就可以了。
❻ git 没add 就用reset回到之前的版本了,还有办法回来吗
没有用git add,也就是相应的信息没有加入到Git的缓冲区中,更没有被Git作为版本提交记录下来。所以,不能恢复了.
❼ git如何回退到某个版本
1. 使用git log命令来查看所有的历史源版本,获取某个历史版本的id,假设查到历史版本的id是。2.使用命令git reset –hard 3. 把修改推到远程服务器git push -f -u origin master
❽ intellij idea用git怎么退回上个版本
gitreset[commit哈希值]但是这样做抄只能把本地分支回滚到该commit上,远程分支还在原来的地方。可以这样操作:在你想要回滚的commit上另外建一个新分支,然后gitcheckout[该分支],然后把原来的分支删除掉,gitbranch-d[老分支]可以删除本地的老分支,同样,远程分支还是老状态,可以gitpushorigin:[老分支],把远程的老分支删除,这样你需要回滚的commit之后的信息在本地和远程都彻底消灭了(慎重,确保你真的不要这些信息了哦)。而你需要回滚的commit之前的信息全部保存了,只不过是分支名字换了一下,你也可以把分支改名回来。这时远程的新分支还不存在,你之后又改动commit并且push之后,远程也和本地同步上了。
❾ 如何用 Git 将代码恢复到一个历史的版本
有些时候,在一些特殊情况下,我们需要将代码恢复到一个历史的提交版本上。而这个历史提交版本,离最新的提交已经比较久远了。比如,我希望将如下的仓库的提交,恢复到上上上上次提交。当然,我可以一次一次的 revert,但是有没有更快更简单的办法呢?暴力的方式如果你的仓库是自己在用(不影响别人),那么你可以使用 git reset –hard <target_commit_id> 来恢复到指定的提交,再用 git push -f 来强制更新远程的分支指针。为了保证万一需要找回历史提交,我们可以先打一个 tag 来备份。对于刚刚的例子,需要执行的命令就是:// 备份当前的分支到 backup_commitgit tag backup_commitgit push origin backup_commit// 重置 source 分支git reset –hard 23801b2// 强制 push 更新远程分支git push origin source -f温和的方式如果你的仓库是多人在协作,那么你这么操作会使用别人本地的代码库混乱,所以只能建一个新的提交,这个新的提交中把想取消的提交都 revert 掉,那么具体应该如何做呢?方法如下:首先,和刚刚一样,用 git reset –hard 23801b2 将代码切换到目标提交的 id。接下来,用 git reset –soft origin/source 命令,将当前代码切换回最新的提交。执行完上面两步后,你的仓库还是最新的提交,但是工作区变成了历史的提交内容,这个时候用 git add 和 git commit 即可。最终完成的效果如下:不过经过念茜的提醒,该方法需要保证 reset 的时候没有别人做新的提交,如果有的话,会一并把别人的提交也撤销了。所以还是挺危险的,慎用。虽然用到的时候很少,但是理解它的原理有助于大家理解 Git 的工作区,暂存区和版本库的各种指针操作的意义,希望对大家有用。
❿ git 代码上传后,怎么回退版本
总有一天你会遇到下面的问题.(1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚.(2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚.这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的.大致分为下面2种情况:1.没有push这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令resetgit reset [–soft | –mixed | –hard上面常见三种类型–mixed会保留源码,只是将git commit和index 信息回退到了某个版本.git reset 默认是 –mixed 模式 git reset –mixed 等价于 git reset–soft保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.–hard源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)当然有人在push代码以后,也使用 reset –hard <commit…> 回退代码到某个版本之前,但是这样会有一个问题,你线上的代码没有变,线上commit,index都没有变,当你把本地代码修改完提交的时候你会发现权是冲突…..所以,这种情况你要使用下面的方式2.已经push对于已经把代码push到线上仓库,你回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.你要用到下面的命令revertgit revert用于反转提交,执行evert命令时要求工作树必须是干净的.git revert用一个新提交来消除一个历史提交所做的任何修改.revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新.(这里不会像reset造成冲突的问题)revert 使用,需要先找到你想回滚版本唯一的commit标识代码,可以用 git log 或者在adgit搭建的web环境历史提交记录里查看.git revert 通常,前几位即可git revert c011eb3git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit看似达到的效果是一样的,其实完全不同.第一:上面我们说的如果你已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.