git restore, git revert, git checkout, git switch, git stash使用和区别

git restore, git revert, 和 git checkout(现在推荐使用 git switch)是 Git 中用于处理不同场景下的版本恢复或切换的命令。以下是它们各自的功能和用途:

git restore

git restore 是 Git 2.23 版本引入的一个新命令,它主要负责将文件恢复到某个指定的状态。git restore 主要有以下用途:

  • 恢复工作区文件:使用 git restore <file> 可以撤销对工作区文件的修改,将其恢复到最近一次提交的状态,丢弃本地未提交的更改。

  • 取消暂存的更改:使用 git restore --staged <file> 可以取消对暂存区文件的更改,即撤销已经 git add 但还未 git commit 的改动。

  • 恢复到特定版本:结合 --source=<commit> 选项,可以将文件恢复到特定提交的状态,例如 git restore --source=HEAD~1 <file> 将文件恢复到上一个提交时的状态。

git revert

git revert 用于撤销某次提交的影响,创建一个新的提交,其中包含与指定提交相反的更改。这样做的好处是保留了完整的提交历史,同时使项目状态回归到如果没有那次提交的样子。使用方式如下:

git revert <commit_hash>

git revert 不会删除或修改历史中的任何提交,而是通过生成一个新的提交来“反向应用”指定提交的更改。这使得项目历史仍然可追溯,并且合乎版本控制系统的原则。

git checkout / git switch

git checkout 以前是用于切换分支或恢复工作区文件到某个提交状态的多功能命令。然而,随着 Git 的发展,为了提高命令的明确性和避免潜在的混淆,自 Git 2.23 起,推荐使用 git switch 专门用于分支切换,而 git restore 用于文件恢复。如果您仍在使用较旧版本的 Git 或者某些场合仍需使用 git checkout,它有以下用途:

  • 切换分支git checkout <branch> 用于切换到指定的分支。

  • 恢复文件git checkout HEAD -- <file> 可以将指定文件恢复到最近一次提交的状态,与 git restore <file> 功能相同。

在较新的 Git 版本中,对于分支切换操作,应使用:

git switch <branch>

git stash

虽然您没有直接询问 git stash,但它也常用于版本恢复相关的场景。git stash 用于暂时存储(stash away)当前工作目录和暂存区中的未完成改动,以便您可以切换到其他分支或清理工作环境,之后再通过 git stash applygit stash pop 将这些改动恢复回来。

总结:

  • git restore:用于撤销文件的本地更改(工作区)或暂存更改(暂存区),或将文件恢复到特定提交的状态。
  • git revert:用于创建一个新的提交,该提交中包含与指定提交相反的更改,从而在不修改历史的情况下撤销某次提交的效果。
  • git switch(或旧版 git checkout):用于切换到不同的分支。
  • git stash:用于临时保存当前未完成的工作,以便在其他操作后恢复这些改动。

根据具体需求选择合适的命令,可以有效地管理项目状态,回退或撤销更改,以及在不同开发阶段之间切换。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值