git reset和git revert有什么区别?

时间:2014-11-20 06:05:01

标签: git

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

3 个答案:

答案 0 :(得分:25)

据我所知,他们做的完全不同。

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

A <- B <- C 
          ^ HEAD

如果我发现B我之前犯了错误,我想&#34;撤消&#34;它的变化,git-revert - B将导致:

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

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

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

A <- B <- C 
          ^ HEAD

git-reset - 告诉B会给你

A <- B <- C 
     ^ HEAD

答案 1 :(得分:1)

git revert:通过创建新提交来撤消对本地/源代码库的提交的更改部分。

command: git revert <id>

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

Working Dir (coding) -> Staging Area(Index) -> local Repo (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 :(得分:0)

Git reset - &gt;将分支的提示移动到另一个提交。这可用于从当前分支中删除提交。它通过提交向后移动分支。 Git Revert - &gt;通过创建新提交撤消提交。这是撤消更改的安全方法,因为它无法重写提交历史记录。