在咱们往常开发中,有时候提交到master主分支之后,不要已改的业务功用了或许有了更好的做法,此刻,咱们希望吊销提交的操作,让代码回到某个版别。
在 Git 中,咱们能够运用多种办法回退代码到指定版别,包含运用 reset
指令、运用 revert
指令、运用 checkout
指令等。下面分别介绍这些办法。
办法一: 运用 git reset
指令
指令
git reset
指令能够将当时分支的 HEAD 指针指向指定的提交,然后回退代码到指定版别。
该指令有三种形式:--soft
、--mixed
和 --hard
。它们的区别在于回退代码的程度不同。
-
--mixed
(默认):将 HEAD 指针和暂存区都回退到指定提交,但不改动作业区的内容。 -
--soft
仅将 HEAD 指针回退到指定提交,不改动暂存区和作业区的内容。 -
--hard
将 HEAD 指针、暂存区和作业区都回退到指定提交,会丢掉最新的代码修正,慎用。
示例
# 检查提交前史
git log
# 回退到指定提交(运用 --soft 形式)
git reset --soft <commit>
# 检查状况
git status
# 提交回退后的代码
git commit -m "回退到 <commit>"
# 推送到长途库房
git push origin <branch>
咱们首要运用 git log
指令检查提交前史,找到要回退到的提交的 SHA-1 值。
然后运用 git reset
指令回退代码到指定提交,
这里运用了 --soft
形式,这样暂存区和作业区的内容不会改动,仅仅 HEAD 指针指向了指定提交。
接着咱们运用 git status
指令检查当时状况,承认回退操作是否正确。
最后,咱们运用 git commit
指令提交回退后的代码,并运用 git push
指令将代码推送到长途库房。
办法二:运用 git revert
指令
指令
git revert
指令能够将指定提交的修正反向应用到当时分支上,相当于吊销指定提交的修正。
这种方式比运用 git reset
指令愈加安全,由于它不会改动提交前史,而是创建一个新的提交来吊销之前的修正。
示例
# 检查提交前史
git log
# 吊销指定提交
git revert <commit>
# 提交吊销操作
git commit -m "回退到版别 <commit>"
# 推送到长途库房
git push origin <branch>
咱们首要运用 git log
指令检查提交前史,找到要回退的提交的 SHA-1 值。
然后运用 git revert
指令吊销指定提交的修正,这样会创建一个新的提交来吊销之前的修正。
接着咱们运用 git commit
指令提交吊销操作,
并运用 git push
指令将代码推送到长途库房。
办法三:运用 git checkout
指令
指令
git checkout
指令能够将当时分支的 HEAD 指针指向指定的提交,并将作业区的内容替换成指定提交的内容。这种方式不改动提交前史,但会直接覆盖作业区的内容,慎用。
示例
# 检查提交前史
git log
# 切换到指定提交
git checkout <commit>
# 提交回退后的代码
git commit -m "回退到版别 <commit>"
# 切回到原来的分支
git checkout <branch>
# 推送到长途库房
git push origin <branch>
咱们首要运用 git log
指令检查提交前史,找到要回退的提交的 SHA-1 值。
然后运用 git checkout
指令切换到指定提交,这样作业区的内容就会被直接替换成指定提交的内容。
接着咱们运用 git commit
指令提交回退后的代码,并运用 git checkout
指令切回到原来的分支。
最后,咱们运用 git push
指令将代码推送到长途库房。
改之后git push上去长途库房的指令行 以及 报错的相关解决办法
当咱们改完代码后,想要将代码推送到长途库房时,能够运用以下指令:
# 推送当时分支到长途库房
git push origin <branch>
其间,<branch>
表明当时分支的称号,例如 master
。这个指令会将本地分支的提交推送到长途库房,并将长途分支更新为与本地分支共同。
假如在推送代码时呈现过错,能够根据过错提示进行相应的解决办法。
常见的过错
及其解决办法
如下:
-
error: failed to push some refs to 'git@github.com:<username>/<repository>.git'
:这个过错通常是由于本地分支和长途分支的提交前史不共同导致的。解决办法是先履行git pull
指令将长途分支的代码拉取到本地,然后再履行git push
指令推送代码。 -
error: src refspec <branch> does not match any
:这个过错通常是由于本地分支不存在或许拼写过错导致的。解决办法是先履行git branch
指令检查本地分支列表,承认分支名是否正确,假如不存在则需求先创建分支。 -
error: failed to push some refs to 'git@github.com:<username>/<repository>.git'
:这个过错通常是由于权限缺乏导致的。解决办法是承认当时用户是否有权限推送代码到长途库房,假如没有则需求联系管理员进行授权。
总结
总之,回退代码和推送代码都是 Git 中非常常见的操作,把握这些操作能够帮助咱们愈加高效地进行开发和协作。
希望能有所帮助。
最好的学习是贡献和输出。
本文正在参加「金石计划」