git reset 和 git revert

文章目录

  • 初始提交
  • git reset
  • git revert

初始提交

commit b0ef8f9125226af8f06ff1aba7c1f1fc83adea9b (HEAD -> master, origin/master)

    feat add 3.go

commit 338bf3e30983d34074f37a18b3ff80ea9bca75f0

    feat add 2.go

commit 6b166ed34962da08d944e2b1d3f36d9015dd8f35

    feat add 1.go

git reset

git reset 和 git revert_第1张图片

  • 将 HEAD 指向指定的版本上去,不会产生新的 commit,远程仓库分支需要 -f 强制更新

git reset --hard

➜  demo git:(master) git reset --hard 6b166ed34962da08d944e2b1d3f36d9015dd8f35
HEAD 现在位于 6b166ed feat add 1.go

git log

commit 6b166ed34962da08d944e2b1d3f36d9015dd8f35 (HEAD -> master)

    feat add 1.go

git revert

git reset 和 git revert_第2张图片

  • 撤销某个 commit 的内容,报错该 commit 之前和之后的提交记录和内容,产生一个新 commit

git revert

➜  demo git:(master) git revert 338bf3e30983d34074f37a18b3ff80ea9bca75f0
删除 2.go
[master ef822b7] Revert "feat add 2.go"
 1 file changed, 9 deletions(-)
 delete mode 100644 2.go

git log

commit ef822b71c33a2dbbdaa350fddcfa14e8fc55e543 (HEAD -> master, origin/master)

    Revert "feat add 2.go"

    This reverts commit 338bf3e30983d34074f37a18b3ff80ea9bca75f0.

commit b0ef8f9125226af8f06ff1aba7c1f1fc83adea9b

    feat add 3.go
  • 但要注意,因为revert 是撤销的意思,如果 commit1、commit2、commit3都修改了同一个文件,那么对 commit1 进行了 revert 操作会产生冲突,因为要撤销 commit1 的修改,但是后续又对 commit1 进行了修改,所以 git 会提示冲突,做法是先 revert commit3 的修改,然后 revert commit2 的修改,最后 revert commit1 的修改

你可能感兴趣的:(git,git,github)