`
wangyanlong0107
  • 浏览: 499826 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

git各种状态下撤销修改的方法

    博客分类:
  • git
 
阅读更多

使用Git时会出现各种各样的问题,下面是几种情况下怎么反悔的操作

一,未加入缓存区,撤销文件修改

     git checkout -- file

二,已加入缓存区,撤销文件提交

     git reset HEAD file

     或git rm --cached file

三,已提交到本地,回滚提交

     git reset --HARD commit_id/HEAD^n

四,已push到远程

1,git revert的方式

 

      1)git revert commit_id   //将要撤销的提交revert为一次新的提交,这样不仅提交被撤销了,而且本地分支也比远程分支多一次提交

      2)git push origin master //推送到远程

      这种方式是最方便的,但缺点是多了2次无用的commit,使整个分支的commit不再整洁。
 

2,如果远程仓库不是使用git init --bare建立的裸仓库(裸仓库无法回滚提交),而是一个普通仓库(通过git init建立),那么你可以登录到远程服务器,然后回滚远程分支,然后再把本地分支回滚。

      

3,可删除远程分支,然后回滚本地分支,然后将本地分支push到origin

          1)git branch xxx_backup                                //创建备份分支

          2)git push origin xxx_backup:xxx_backup  //将备份分支推送到origin

          3)git checkout  xxx                                           //切回要撤销修改的分支

          4)git reset --hard commit_id                          //撤销本地commit

          5)git push origin :xxx                                      //删除远程xxx分支

          6)git push origin xxx:xxx                                //将本地撤销修改后的xxx分支推送到origin

          7)git branch -d xxx_backup                          //删除本地备份分支

                git push origin :xxx_backup                      //删除远程备份分支

          上述步骤5执行时可能会出现错误,如下:

          

         尤其是远程仓库是在github或oschina上时,因为这些网站中将某分支设置成了当前分支,而删除当前分支是不允许的,所以要在这些网站的设置中切换当前分支为其它分支,然后再此执行步骤5.

4,方法3中,如果是自己建立的仓库,默认分支是master,我没找到修改默认分支的办法,master分支也就无法删除,方法4也就没用了。但有另一种方法可以解决问题

      1)登录服务器,备份中央仓库

            mv demo.git demo_backup.git

      2)新建一个空的demo.git       

            git init --bare demo.git

      3)通过回滚,修复本地提交到正常状态

            git reset --hard 提交id

      4)推送本地的master分支到服务器的demo.git

            git push remote master:master

      这样的做法,可以保存之前的提交记录,是比较好的修复方式;这种方法比较适合修复出现代码覆盖的情况

如果中间出现问题,请通过demo_backup.git找回中央仓库

 

错误的做法

1,直接reset本地提交,然后push到origin

          这种做法是错误的,git会报错,原因是远程仓库中该分支比本地分支多n次commit,只能先pull,再push。而如果先pull的话,那本地又变成和远程一样了,是解决不了问题的。

分享到:
评论

相关推荐

    Git撤销使用方法,详细教学

    本文将详细介绍如何在Git中进行撤销操作,以便恢复到先前的状态或者取消不希望的更改。 1. **撤销对已经暂存区的文件的修改** 当你使用`git add`命令将文件添加到暂存区后,如果想要撤销对文件的暂存状态,可以...

    git修改和删除

    6. **查看当前状态**:此时执行`git status`命令会显示第二次修改尚未加入暂存区。 ```bash $ git status # On branch master # Changes not staged for commit: # (use "git add <file>" to update what will...

    程序员git简单使用方法

    - **撤销未提交的更改**: `git reset --hard HEAD`可恢复到最近一次提交的状态,但未添加到暂存区的更改将丢失。 - **回退版本**: `git revert <提交哈希>`或`git reset --hard <提交哈希>`可以回退到特定版本,后...

    Git工具安装包,Git工具安装包

    6. 撤销操作:如果误操作,Git提供了强大的撤销功能,如`git reset`和`git revert`,可以在不影响历史记录的情况下恢复到之前的状态。 7. 快照式模型:Git以文件快照的形式存储项目状态,每次提交都是对整个项目...

    学习git和gitbash使用的一些详细操作

    - 当文件被添加到暂存区后,想要撤销可以使用`git reset HEAD <file>`将文件从暂存区中移出,然后使用`git checkout -- <file>`撤销修改。 Git还有一些高级功能,比如: - 使用标签(tag)来标记重要的提交点,`git...

    Git的客户端+服务端Gitblit+Git clone

    4. 查看状态:`git status`可以查看当前工作目录的状态,哪些文件被修改或未追踪。 5. 追踪远程仓库:`git remote add origin <url>`将远程仓库与本地仓库关联。 6. 推送更改:`git push origin master`将本地master...

    git 2.20 x64

    4. **撤销操作**:通过`git reset`和`git revert`,可以撤销错误的提交,保护代码的完整性。 5. **合并冲突解决**:当多个开发者修改同一部分代码时,Git会提示合并冲突,用户可以手动解决这些冲突后再提交。 Git ...

    git使用简介ppt

    `git reset` 用于撤销某次提交,之后的修改会被退回到暂存区或工作目录。这两种命令的区别在于它们处理撤销的方式不同。 - **分支合并策略**:使用 `-s` 参数指定合并策略,常用的策略包括 `ours`、`theirs` 和 `...

    git的详细使用教程.pdf

    3. **查看文件状态**:使用`git status`命令可以查看当前工作目录下的文件状态,包括未跟踪的新文件、已修改但未暂存的文件以及已暂存等待提交的文件。 4. **添加文件到暂存区**:通过`git add`命令可以将工作目录...

    git magic 开始git吧

    - **撤销与重做**:掌握撤销错误更改及恢复工作的方法,保持代码库的清洁和有序。 - **变更日志生成**:学会创建清晰的变更日志,记录每次提交的信息,便于追踪修改历史。 - **下载与更新**:掌握从远程仓库下载...

    git 安装程序包 git 安装程序包

    - **查看状态**:`git status`可查看当前仓库的状态,哪些文件被修改,哪些已添加到暂存区。 - **分支管理**:`git branch`列出所有分支,`git checkout -b <branch>`创建并切换到新分支。 4. **远程仓库连接** ...

    Git-2.27.zip

    4. 撤销操作:如果误操作,Git提供了强大的撤销机制,可以撤销提交、重置分支等。 5. 差异分析:通过`git diff`命令查看文件或代码的差异。 6. 合并冲突:当多人同时修改同一部分代码时,Git会提示合并冲突,需要...

    git零基础实战

    - 使用`git reset`撤销最近一次提交。 - 使用`git rebase`或`git merge`合并分支时可以调整提交历史。 - **分支管理** - 创建新分支:`git branch <branch-name>`。 - 切换分支:`git checkout <branch-name>`...

    git常用操作命令 pdf

     git checkout -- readme.txt 撤销修改:1. 文件在添加到缓存区前修改,则回退到原工作区状态;2. 文件在添加到缓存区后修改,则回退到原缓存区状态。也即是将readme.txt撤回到最近一次git add或git commit状态...

    Git权威指南.txt

    - `git reset` 可以用于撤销最近的提交或将工作目录回滚到之前的某个状态。 #### 八、Git检出 - **8.1 HEAD 的含义** - HEAD 是一个特殊的引用,指向当前工作目录所在的分支的最新提交。 - **8.2 分离头指针的...

    git基本操作演示ppt

    ### Git基本操作知识点详解 #### 一、Git简介 Git是一种开源的分布式版本控制系统,能够高效地处理从小...通过以上内容的学习和实践,您将能够掌握Git的基本使用方法,并能够有效地利用Git进行团队协作和版本控制。

    git电子书(Git权威指南&Pro Git简体中文版)

    - **撤销更改**:`git reset`和`git checkout`可以撤销工作目录或暂存区的更改。 5. **分支管理** - **创建分支**:`git branch`创建新的开发分支。 - **切换分支**:`git checkout`在分支间切换。 - **合并...

Global site tag (gtag.js) - Google Analytics