【问题标题】:What is the difference between git reset and git revert?git reset 和 git revert 有什么区别?
【发布时间】:2015-01-17 21:59:03
【问题描述】:

嗨,我是 git 的新手,我不明白 git resetgit revert 之间的基本区别是什么。 git revert 是否恢复被推送的合并?

【问题讨论】:

标签: git


【解决方案1】:

git revert:通过创建新的提交来撤消对本地/原始存储库的提交的更改部分。

command: git revert <id>

git reset:Git reset 将删除/撤消在本地 repo 中提交的更改。它通过 3 种方式撤消更改,--soft、--mixed、--hard。其中mixed是默认值。

工作目录(编码)->暂存区(索引)->本地回购(git push)

git reset –soft/mixed/hard –HEAD~N -> mixed is default

git reset --soft HEAD~N   # will move file/changes  from local commit to staging area
git reset --mixed HEAD~N  #will move file/changes  from local commit to working directory
git reset --hard HEAD~N  #will delete file /changes from working directory 

【讨论】:

    【解决方案2】:

    Git reset -->将分支的尖端移动到不同的提交。这可用于从当前分支中删除提交。它通过提交向后移动分支。 Git Revert-->通过创建新提交来撤消提交。这是撤消更改的安全方法,因为它没有机会重写提交历史记录。

    【讨论】:

      【解决方案3】:

      据我所知,他们正在做完全不同的事情。

      git revert 旨在恢复先前提交的效果。例如,

      A <- B <- C 
                ^ HEAD
      

      如果我发现我之前提交的 B 是错误的,并且我想“撤消”它的更改,git-revert-ing B 将导致:

      A <- B <- C <- B'
                     ^ HEAD
      

      B' 正在反转 B 中所做的更改。

      git reset 更直接,它只是将 HEAD 设置为某个提交,

      A <- B <- C 
                ^ HEAD
      

      git-reset-ting to B会给你

      A <- B <- C 
           ^ HEAD
      

      【讨论】:

      • 如果答案正确且有帮助,请考虑接受。
      • 哦,是的,当然.. 接受
      • 有没有办法用命令行显示“树图”(例如:A
      • @Catbuilts 类似git log --graph?
      • 除此之外还有什么作用吗?我注意到在不小心将分支 A 合并到分支 B 之后,然后恢复了合并提交,那么就不可能再将 A 合并到 B 中了。但只能通过还原还原提交。
      猜你喜欢
      • 2012-01-11
      • 2021-07-04
      • 2011-04-08
      • 2020-06-22
      • 2012-10-16
      • 2023-03-23
      • 2012-06-28
      • 2021-04-02
      相关资源
      最近更新 更多