美文网首页
Git——7、Git放弃所有本地修改

Git——7、Git放弃所有本地修改

作者: GameObjectLgy | 来源:发表于2022-03-14 11:48 被阅读0次
    • 本地还没有提交到暂存区,想放弃工作区的修改。
      git checkout . 本地所有的修改,没有提交的,都返回到原来的状态

    • 本地已经提交到了暂存区,想放弃暂存区里的提交。
      git reset --hard HASH #返回到某个节点(通常是上上个节点),不保留修改。
      git reset --soft HASH #返回到某个节点(通常是上上个节点),保留修改

    这里reset指令只影响被track过的文件,如果要影响没有被track过的文件,使用clean。

    • 查看使用 git clean会有哪些文件被删除
      git clean -n
    • 删除工作区中所有没有track过的文件
      git clean -f
      使用这个指令,需要在父目录而不是子目录进行。

    场景1:错误提交已经推送到remote
    如果想要只操作修改中间的一个commit,不对其他的commit产生影响; 也就是类似于我们只修改commit_id2,而对commit_id3 和 commit_id4无影响,该怎么处理呢? 在项目开发中,突然发现在前几次的提交中,有一次提交中包含一个bug; 当然我们可以进行一个新的修改,然后再提交一次; 但是历史看着不美观,我们可以直接重做有bug的commit。

    为什么不直接去再添加一个commit呢? git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。

    比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西;
    在revert命令中常用的就两个:

    git revert -e <commit_id>:重做指定commit的提交信息
    git revert -n <commit_id>:重做执行commit的代码修改
    git revert -e
    重做commit_id的提交信息,生成为一个新的new_commit_id:git revert -e commit_id

    git revert -n
    重做commit_id的提交:git revert -n commit_id
    将commit_id中修改,放到index区,我们可以对他重新做修改并重新提交

    相关文章

      网友评论

          本文标题:Git——7、Git放弃所有本地修改

          本文链接:https://www.haomeiwen.com/subject/pgvjdrtx.html