Git回退版本


目前团队在做一个项目,大家使用同一个GIT分支写代码,每次都使用一个脚本更新推送代码。脚本如下:

echo "please enter commit info:"

read msg

git pull origin master

git add .
git commit -a -m "$msg"
git push -u origin master
#sync
ssh root@XXXXXX.com 'cd /var/www/xv/web/xvstore && git pull'

正常情况下,大家不同时写同一个文件,使用这个脚本能轻松的完成代码的更新。但是当发生冲突时,很有可能会将远程库中的代码覆盖。
昨天更新代码的时候,由于文件冲突,强行运行多次脚步,将代码推送上去,一看发现其他代码也被覆盖掉,顿时想起回退版本。在看过几种方法之后,发现了一种比较简单的方法,解决远程仓库回退的问题。

首先运行git log,git reset

具体用哪个命令根据具体情况判断

回退所有内容到上一个版本 
git reset HEAD^ 
回退a.py这个文件的版本到上一个版本 
git reset HEAD^ a.py 
向前回退到第3个版本 
git reset –soft HEAD~3 
将本地的状态回退到和远程的一样 
git reset –hard origin/master 
回退到某个版本 
git reset 057d 
回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit 
git revert HEAD 

然后git push

本地的master分支 reset到你相应的位置之后,在进行push的时候加上-f参数.
完整的命令是:

git push -f origin master

在push的时候,需要你有强制更新的权限(如果你们的git服务器有权限管理的话).
详细的含义你可以在命令行中输入 git push –help 查看.

此时远程仓库的代码会被强行更新到这个版本。之前的commit全部消失。

最后

Git确实是一个博大精深的工具,有大多要学的东西


文章作者: Nczkevin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Nczkevin !
评论
  目录