精华内容
下载资源
问答
  • git reset
    千次阅读
    2021-10-17 14:02:25

    在这里插入图片描述
    【git技巧】
    参考博客:https://blog.csdn.net/crjmail/article/details/100011063

    git add 时,误添加不想提交的文件,如何解决?

    1. 误add所有文件
      git reset HEAD
      将所有此次修改的 file 退回到工作区

    2. 误add单个文件,只撤销部分文件
      git reset HEAD file
      将此次修改的这个 file 退回到工作区

    以上操作使得被操作的文件图标从绿色变红色。

    【注意】
    git add 是将文件从工作区–>暂存区
    git commit 是将文件从暂存区–>git本地仓库

    如果 git add 一个 file 之后,又操作了该文件但未 git add ,且两次操作的地方有冲突
    再 git reset HEAD file 时,文本内容将是后面的操作,而不是前面的回退

    eg:
    (1) 先修改 1.c 的 main 为 mai1n
    $ git diff
    — a/1.c
    +++ b/1.c
    @@ -1,4 +1,4 @@
    -main
    +mai1n

    (2) 放到暂存区
    $ git add .

    (3) 再次修改 1.c 的 main 为 mai2n
    $ git diff
    — a/1.c
    +++ b/1.c
    @@ -1,4 +1,4 @@
    -mai1n
    +mai2n

    (4) 查看 git 状态
    $ git status
    Changes to be committed:
    modified: 1.c
    Changes not staged for commit:
    modified: 1.c

    (5) 回退暂存区
    $ git reset HEAD 1.c
    Unstaged changes after reset:
    M 1.c

    (6) 查看状态
    $ git status
    Changes not staged for commit:
    modified: 1.c

    $ git diff
    diff --git a/1.c b/1.c
    — a/1.c
    +++ b/1.c
    @@ -1,4 +1,4 @@
    -main
    +mai2n

    如果 git add 一个 file 之后,又操作了该文件但未 git add ,且两次操作的地方不冲突
    再 git reset HEAD file 时,文本内容将是后面的操作,而不是前面的回退

    (1) 修改 1.c
    $ git diff
    diff --git a/1.c b/1.c
    index 0bd96f3…f9e2dc8 100644
    — a/1.c
    +++ b/1.c
    @@ -1,4 +1,4 @@
    hello world
    -main
    +main123
    study

    (2) 放到暂存区
    $ git add .

    (3) 再次修改 1.c ,在最后一行添加一行 “love”, 但是不 git add
    $ git status
    On branch master
    Changes to be committed:
    modified: 1.c
    Changes not staged for commit:
    modified: 1.c

    $ git diff
    diff --git a/1.c b/1.c
    index f9e2dc8…a521094 100644
    — a/1.c
    +++ b/1.c
    @@ -1,4 +1,4 @@
    hello world
    main123
    study
    +love

    (4) 回退暂存区
    $ git reset HEAD 1.c
    Unstaged changes after reset:
    M 1.c

    $ git diff
    diff --git a/1.c b/1.c
    index 0bd96f3…a521094 100644
    — a/1.c
    +++ b/1.c
    @@ -1,4 +1,4 @@
    hello world
    -main
    +main123
    study

    +love

    这应该是 git reset HEAD file 的一份风险点

    【it rm 与 git reset的区别】
    git rm:用于从工作区和索引中删除文件
    git reset:用于将当前HEAD复位到指定状态。一般用于撤消之前的一些操作(如:git add,git commit等)。

    git rm -f file_path
    删除暂存区和分支上的文件,同时工作区也不需要

    git rm --cached file_path
    删除暂存区或分支上的文件, 但工作区需要使用, 只是不希望被版本控制

    git reset HEAD 回退暂存区里的文件

    更多相关内容
  • 主要介绍了详解git reset --hard 和 git reset --soft区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了详解IDEA Git Reset 选项说明,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 许多时候,在用 的时候有可能 提交代码后,发现这一次 的内容是有错误的,那么可以用git reset进行操作撤回,且无新增commit_id 有三种工作模式,即 、(默认方式) 和 。要放弃目前本地的所有改变时,即去掉所有 到暂...

    许多时候,在用 Git 的时候有可能 git commit 提交代码后,发现这一次 commit 的内容是有错误的,那么可以用git reset进行操作撤回,且无新增commit_id

    工作模式

    git reset 有三种工作模式,即 --soft–mixed(默认方式) 和 --hard

    • git reset --soft:仅仅移动当前 Head 指针,不会改变工作区和暂存区的内容,如下图所示:只有HEAD 指针被修改了
      在这里插入图片描述
    • git reset --mixed:是git reset 的默认参数,移动 HEAD 指针,改变暂存区内容,但不会改变工作区 ,如下图所示:HEAD 指针和暂存区的内容均被修改
      104_git撤销修改回退版本git reset.png
    • git reset --hard:当前 HEAD 指针、工作区和暂存区内容全部改变 ,如下图所示:HEAD 指针、工作区和暂存区内容全部改变
      在这里插入图片描述

    使用场景

    • –hard
    1. 要放弃目前本地的所有改变时,即去掉所有 git add 到暂存区的文件和工作区的文件,可以执行 git reset --hard HEAD 来强制恢复 git 管理的文件夹的內容及状态;

    2. 抛弃目标节点后的所有 commit(可能觉得目标节点到原节点之间的 commit 提交有问题)。

    • –soft
    1. 原节点和 reset 节点之间的差异变更集会放入 index 暂存区中(Staged files),所以假如我们之前工作目录没有改过任何文件,也没 add 到暂存区,那么使用 reset --soft 后,我们可以直接执行 git commitindex 暂存区中的內容提交至 Repository 中。

      为什么要这样呢?这样做的使用场景是:假如我们想合并当前节点与 reset 目标节点之间不具太大意义的 commit 记录(可能是阶段性地频繁提交,就是开发一个功能的时候,改或者增加一个文件的时候就 commit,这样做导致一个完整的功能可能会好多个 commit 点,这时假如你需要把这些 commit 整合成一个 commit 的时候)时,可以考虑使用 reset --soft 来让 commit 演进线图较为清晰。总而言之,可以使用 --soft 合并 commit 节点

    –mixed(默认)

    1. 使用完 reset --mixed 后,我们可以直接执行 git add 将这些改变过的文件內容加入 index暂存区中,再执行 git commitIndex 暂存区中的內容提交至 Repository 中,这样一样可以达到合并 commit 节点的效果(与上面 --soft 合并 commit 节点差不多,只是多了 git add 添加到暂存区的操作);

    2. 移除所有 Index 暂存区中准备要提交的文件(Staged files),我们可以执行 git reset HEADUnstage 所有已列入 Index 暂存区的待提交的文件。(有时候发现 add 错文件到暂存区,就可以使用命令)。

    3. commit 提交某些错误代码,或者没有必要的文件也被 commit 上去,不想再修改错误再 commit(因为会留下一个错误 commit 点),可以回退到正确的 commit 点上,然后所有原节点和 reset 节点之间差异会返回工作目录,假如有个没必要的文件的话就可以直接删除了,再 commit 上去就OK了。

    git回滚文件场景总结

    修改完还未git add:使用 git checkout 回滚:
    git checkout .
    使用暂存区的文件覆盖工作区,所以执行完 git add . 之后,再执行该命令是无效的。 git checkout .git add . 是一对反义词。

    git add提交还未commit
    使用 git add 提交到暂存区,还未 commit 之前,使用 git resetgit checkout 回滚:

    git reset  # 先用 Head 指针覆盖当前的暂存区内容
    git checkout . # 再用暂存区内容覆盖工作区内容
    

    或者使用直接使用 head 覆盖当前暂存区和工作区。

    git reset --hard
    

    已经git commit还未git push
    使用 git reset 回滚:

    git reset --hard <last_commit_id>
    

    覆盖本地仓库、暂存区和工作区。

    已经git push

    git reset --hard <commit_id>
    

    强制提交当前版本号:git push origin <远端分支名称> --force

    错误的把大文件添加到了缓存区

    git reset
    

    撤回添加。

    展开全文
  • Git Reset三种形式

    2022-02-15 13:43:47
    git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可; git reset --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit...

    git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
    git reset --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉
    git reset 分为三种:软 --soft,中 ---mixed,硬 --hard 对应着三种回滚的程度,程度越硬,回滚的越“狠” 

    总结
    1. --soft 已 add,但尚未 commit

     

    2. --mixed(git reset 的默认设定,可以省略不写),文件会回退到未 add(未暂存)的状态

     

    3. --hard 硬核,彻底,会彻底返回到回退前的版本状态,了无痕迹

    git reset 加不加 --hard的区别

    参考网站

    使用

    $ git reset --hard HEAD^   // 退回到相对于当前版本的上一个版本 HEAD 表示当前版本
    $ git reset --hard HEAD^^  // 退回到相对于当前版本的上上一个版本  HEAD 代表当前版本
    $ git reset --hard HEAD~100 //退回到相对于当前版本的上 100 个版本去  HEAD 表示当前版本
    $ git reset --hard 3628164  // 退回到指定的版本   这里不需要全部写commit id  Git 回去自动适配

    展开全文
  • 我最近发表了一篇有关如何执行硬git reset的文章,但是在社交媒体上我反复问到的问题之一是,您对本地提交进行硬git reset之后将更改发布到远程GitHub或GitLab存储库? 当您执行git reset and push时,是否会发布...

    git reset后提交

    我最近发表了一篇有关如何执行硬git reset的文章,但是在社交媒体上我反复问到的问题之一是,您对本地提交进行硬git reset之后将更改发布到远程GitHub或GitLab存储库? 当您执行git reset and push时,是否会发布整个提交历史记录,包括在重置点之后发生的提交,还是忽略了Git回滚的提交?

    如何git重设并推动

    在本地工作时,不清楚将git reset重置为先前的提交并将这些提交推送到远程存储库时会发生什么。 因此,为了演示git reset和push时到底发生了什么,我首先将创建一个名为git-reset-explained的空远程GitHub存储库。 它只包含一个readme.md文件,一个MIT许可证,一个.gitignore文件和一个提交。

    远程GitHub存储库,用于git reset和push示例

    用于git reset和push的远程存储库。

    克隆git-reset解释的仓库

    创建了远程GitHub存储库后,我将在本地克隆该存储库并开始在其中进行操作。

    /c/ git reset hard and push /
    $ git clone https://github.com/cameronmcnz/git-reset-explained.git
    Cloning into 'git-reset-explained'...
    $ cd git*
    /c/ git reset hard and push / git reset explained 

    创建本地提交历史

    在克隆的仓库中,我将创建五个新文件,每次都添加一个新的提交。

    /c/ git reset hard and push / git reset explained
    $ touch alpha.html
    $ git add . & git commit -m "Local commit #1"
    $ touch beta.html
    $ git add . & git commit -m "Local commit #2"
    $ touch charlie.html
    $ git add . & git commit -m "Local commit #3"
    $ touch depeche.html
    $ git add . & git commit -m "Local commit #4"
    $ touch enid.html
    $ git add . & git commit -m "Local commit #5" 

    对reflog的调用显示了git commit命令发出时HEAD的历史记录:

    /c/ git reset hard and push / git reset explained
    $ git reflog
    014df6a (HEAD -> master) HEAD@{0}: commit: Local commit #5
    6237772 HEAD@{1}: commit: Local commit #4
    593794d HEAD@{2}: commit: Local commit #3
    b1a6865 HEAD@{3}: commit: Local commit #2
    8a3358e HEAD@{4}: commit: Local commit #1
    d072c0a (origin/master, origin/HEAD) HEAD@{5}: clone 

    git重置为上一次提交

    现在,如果我要执行硬git reset并将HEAD移至第三个本地提交,则提交4和5应该消失,对吗? git reset应该从我的提交历史记录中删除那些提交,然后带我回到复位点,对吗? 让我们看看当我们发出命令git reset local commit时实际发生了什么。

    /c/ git reset hard and push / git reset explained
    $  git reset --hard 593794d
    HEAD is now at 593794d Local commit #3 

    现在,让我们看看reflog是什么样的:

    /c/ git reset hard and push / git reset explained
    $ git reflog
    593794d (HEAD -> master) HEAD@{0} reset to 593794d
    014df6a  HEAD@{1}: commit: Local commit #5
    6237772  HEAD@{2}: commit: Local commit #4
    593794d (HEAD -> master) HEAD@{3}: commit: Local commit #3
    b1a6865 HEAD@{4}: commit: Local commit #2
    8a3358e HEAD@{5}: commit: Local commit #1
    d072c0a (origin/master, origin/HEAD) HEAD@{6} clone 

    git reset硬推

    从git reflog命令可以看到,提交014df6a和6237772仍然挂着。 当您git reset本地提交时,这些提交不会消失。

    知道Git有存储所有内容的倾向,这并不是一个特别意外的结果。 真正的问题是,如果您将git reset重置为先前的提交并推送到远程存储库 ,将会发生什么? 跳过的两个本地提交git是否也会被推送,还是在本地保持隔离? 为了找出答案,我们只需将其推到远程原点即可:

    /c/ git reset hard and push / git reset explained
    $ git push origin
    Counting objects: 7, done.
    To github.com/cameronmcnz/git-reset-explained.git
    d072c0a..593794d master -> master
     

    推送之后,当我们查看 GitHub上的提交历史记录时,我们注意到只有四个提交,即创建GitHub存储库的服务器端提交,以及我们发布的三个本地提交。 当git reset和push发生时,第四个和第五个本地提交没有被推送到服务器,实质上删除了它们存在的任何历史记录。

    执行git reset并推送到GitHub上的远程

    git的结果是硬重置和远程推送。

    git reset vs恢复

    那我们学到了什么? 好吧,当我们git reset到先前的提交并推送到远程存储库时,不会发布任何撤消提交的痕迹。 这与git revert形成了鲜明的对比,在git revert中,revert命令本身会创建一个新的提交,并且不会丢失过去的提交历史。 因此,如果您想使用Git 撤消先前的提交 ,则reset是使用而不是还原的正确Git命令。


    想更多地了解Git?

    您是Git的新手,并且有兴趣了解有关分布式版本控制的更多信息吗? 这是一些Git教程和Jenkins-Git集成示例,旨在帮助您快速学习Git,DVCS和其他流行的DevOps工具,例如Jenkins和Maven。

    翻译自: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/How-a-git-reset-and-push-to-remote-works-on-previous-local-commits

    git reset后提交

    展开全文
  • git reset后如何恢复

    千次阅读 2021-01-12 09:32:29
    “新来的实习生把自己做了一个月的功能给覆盖了,向我求救,要不要帮他?——编程三分钟”第 8 篇找回弄丢的代码新来的...恢复曾今提交过的记录你使用了git reset --hard commit—id命令,将工作区的提交穿越到你...
  • git深入理解(五):git reset详解

    千次阅读 2020-12-08 18:33:43
    Reset current HEAD to the specified state 首先解释一下这句描述是什么意思,HEAD是指向某个commit的指针,既然如此,那么我们就可以操作HEAD来使其指向特定的commit。 关于暂存区(index)的知识 ...
  • git reset命令

    2022-01-22 17:47:02
    reset 命令:前进或者后退历史版本 创建一个test.txt分步骤输入几行并commit 演示:回退一步 回退后打开test.txt 再回退一步 返回到d行 说明: 1.reset三者是同步的
  • git reset 3种方式

    2022-04-25 10:02:23
    git reset命令有3种方式: 1、git reset --mixed: 此为默认方式,等同于不带任何参数的git reset。 2、git reset --soft: 回退到某个版本,只回退了commit的信息,如果还要提交,直接commit即可(修改的内容...
  • Git三种常用的回退操作 Git 回退 reset一、–soft二、–mixed三、–hard四、HEAD1.撤销全部2.撤销部分总结 一、–soft git reset --soft ...这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ .
  • git reset 撤销

    千次阅读 2020-09-17 19:26:58
    git 撤销操作,git reset git commit之后,想撤销commit 写完代码后,我们一般这样 $git status //查看并确定自己修改的文件有哪些 $git add file_name //添加所有文件 $git commit -m "本功能全部完成" 执行...
  • 九、git reset详解

    千次阅读 2021-04-24 22:28:46
    在开发过程中有时候可能在执行完git commit之后发现代码有问题,需要撤除提交,这时候我们可以使用以下命令来实现
  • git checkout/git reset/git revert/git restore常用回退操作

    万次阅读 多人点赞 2020-03-07 18:48:32
    文章目录 前言 代码回退 Git管理下的各种文件状态 Git回退命令 git checkout git revert git restore git reset git rm 具体回退操作 初始状态 还原00:工作区中未加到暂存区和版本库的文件,还原今天所做的修改 ...
  • 使用git reset回退版本

    2022-01-07 22:55:26
    1、git log命令介绍 在介绍版本回退之前先介绍下如何git log命令,可以查看...2、git reset --hard回退版本 先看下我的提交记录 最新的提交中,我在main.cpp中添加了这两行代码 此时,我们就可以使用git r..
  • 在idea的Terminal控制台中git reset --hard HEAD^后就显示more?,何在git的客户端中效果不一样的。 原因: 这是因为cmd控制台中换行符默认是^,而不是\,所以它的more?的意思是问你下一行是否需要再输入,而^符号...
  • git reset中hard与soft区别

    千次阅读 2022-04-12 14:36:22
     对于我们日常开发中,我们常用的方法可能是git reset --hard,来强行回退commit所提交的信息,这是不友好的,也许我们希望对误操作提交的commit不进行删除而是重新修改并进行提交,这个时候就需要–soft操作了,...
  • git reset HEAD 是将咱暂存区和HEAD的提交保持一致 git reset --hard HEAD 是将工作区、暂存取和HEAD保持一致 测试 git reset HEAD 创建一个readme.md 的文件 创建一个commit 执行以下命令 git add ...
  • IDEA中Git Reset选项说明

    千次阅读 2022-01-13 11:14:18
    演示下图的git reset 各选项的效果。 2. Git Reset操作说明 图中说明: This will reset the current branch head to the selected commit, and update the working tree and the index accoding to the seleted...
  • Git reset 和 revert的区别

    千次阅读 2021-05-30 23:20:20
    一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。使用 git add 可以将文件添加到暂存区。 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的...
  • git恢复指定commit,使用git reset指令

    千次阅读 2021-06-17 16:05:57
    git恢复指定commit,使用git reset指令 git一共有三个区域,HEAD(记录点指针),INDEX(修改暂存区),Working目录(电脑文件) 前提操作 假设我们创建一个新的文件夹使用命令git init,在其中创建了一个文件...
  • git reset –hard后的恢复操作

    千次阅读 2020-12-20 04:22:57
    我遇到的问题在初始化一个比较大的项目时,由于最后一次commit的文件数量较大,无法成功push,百度无果后想要撤回这次commit,于是手贱用了git reset --hard origin/master,结果commit是撤回了,但是文件也丢失了,...
  • 解决git reset后push冲突

    千次阅读 2021-05-03 19:05:00
    git checkout -b temp //新建分支并切换到temp分支 git push origin temp:temp //将代码push到temp分支 /*2.删除主分支*/ git push origin --delete master //删除远端主分支 git branch -d master //删除本地主分支...
  • 一、 在git操作中,有时候,进行了错误的提交,但是还没有push到远程分支,想要撤销本次提交,可以使用git reset –-soft/hard命令。 1、二者区别: git reset –-soft:回退到某个版本,只回退了commit的信息,...
  • 代码中有时候不可避免会出现不该commit的文件被commit,不该push的文件被push到Github里等场景,这时,git reset 这个不那么熟悉的命令就派上用场了。但是 ,git reset hard、soft、mixed三者有区别吗?git reset会...
  • git reset --soft命令的使用

    千次阅读 2021-10-15 14:28:42
    git reset --soft命令的使用 命令语法:git reset --soft 版本号 作用:用于版本的回退,只进行对commit操作的回退,不影响工作区的文件。 例如:在提交代码的时候,commit之后,然后我又在工作区添加了东西,这时候...
  • git reset --hard 和 git reset --soft用法

    千次阅读 2019-10-29 11:39:25
    有时候,进行了错误的提交,但是还没有push到远程分支,想要撤销本次提交,可以使用git reset –-soft/hard命令。 1、二者区别: git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index ...
  • 一. working tree, index,的理解 这三个名字可以简单理解为文件在本地仓库存在的三种不同的位置。...2、index file:是索引文件,它是连接working tree和commit的桥梁,每当我们使用git-add命令来登记后,i.
  • `git reset` 和 `git reset --hard`区别

    万次阅读 2019-07-16 22:40:20
    git resetgit reset --hard区别 先说知识点 有时候,进行了错误的提交,但是还没有push到远程分支,想要撤销本次提交,可以使用git reset –-soft/hard命令 缺省情况 git reset缺省为git reset --soft 二者...
  • 回退和前进commit版本,只是移动HEAD指针的位置,只要进行过commit,将永久保存,不会被删除,回退版本后可以通过git log(最详细)、git log --pretty=oneline(简化)、git log --oneline(上一个的简写)、git ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,178
精华内容 45,671
关键字:

git reset

友情链接: AN2548SW2.zip