Sourcetree如何从特定提交拉取代码用于生产环境?
如何在Sourcetree中拉取特定提交的代码用于生产环境
嘿,完全理解你的困惑——这俩选项确实容易搞混,我来帮你理清楚!
首先明确你的核心需求:已经推送所有本地更改,要获取最后一个稳定提交的代码用于生产,当前代码有问题想彻底回到那个稳定版本。针对这个场景,先给你结论:不要用Revert,应该用Check out,根据你的后续需求选择对应的操作步骤。
先搞懂Check out和Revert的本质区别
- Check out:直接切换到目标提交的代码状态,让你的工作区完全变成那个提交的样子。它是直接“跳”到历史版本,不会修改现有提交历史。
- Revert:是创建一个新的提交,用来抵消某个提交的更改。它不会让你回到过去的版本,而是在当前分支上新增一个反向操作的提交,适合需要保留历史记录、不想删除现有提交的场景——这显然不符合你要直接用稳定版本生产的需求。
针对你的场景的具体操作
情况1:只是临时部署这个稳定版本,之后还要回到原分支继续开发
- 在Sourcetree的历史记录面板里,找到你标记为稳定的那个提交(可以通过提交信息、哈希值确认)。
- 右键点击该提交,选择Check out。
- 这时你的工作区就会完全切换到这个稳定版本的代码,直接打包部署即可。之后要回到原来的分支(比如
main/master),只需要在左侧分支列表里找到对应的分支,右键选择Check out回去就行。
情况2:要把这个稳定版本设为当前分支的最新状态(彻底丢弃之后的有问题提交)
如果你确定之后的提交都是有问题的,想要让远程分支也回到这个稳定版本,按以下步骤来:
- 先按上面的步骤Check out到那个稳定提交。
- 在左侧分支列表里找到你的目标分支(比如
main),右键选择Reset [分支名] to current commit。 - 在弹出的窗口里选择Hard模式(这个模式会彻底清除该分支上稳定提交之后的所有更改,所以一定要确认这些更改都是不需要的!)。
- 因为你之前已经把有问题的代码推送到了远程,现在需要强制推送更新远程分支:右键目标分支,选择Push,在弹出的窗口里勾选Force push(⚠️ 注意:强制推送会覆盖远程分支的现有内容,一定要提前和团队成员沟通,确保他们没有基于那些有问题的提交做新的开发!)。
额外提醒
- 操作前最好先备份一下当前代码(比如创建一个临时分支保存现有状态),避免误操作导致数据丢失。
- 强制推送是高危操作,只有在你完全确认远程分支的内容可以覆盖时才使用。
内容的提问来源于stack exchange,提问作者Bhimbim
相关产品推荐
相关产品推荐

