SourceTree 客户端一些使用场景

前言

日常开发中一定使用过 git 客户端工具,因为这种客户端工具大大提升了我们操作 git 的效率。本文记录自己使用 SourceTree 工具一些场景。

SourceTree是什么?

SourceTree 是一个 Git 客户端管理工具,适用于 Windows 和 Mac 系统。

SourceTree 官网地址

commit后的【代码回滚】

回滚使用场景: 是指将改动的代码(commit后的) 提交到了本地仓库,但没有推送(push)到远端仓库的时候。

git命令进行-回滚操作

git要将最近的commit提交 回退到暂存区,可以使用 reset 命令:

lua 复制代码
git log
git reset --soft HEAD~1

HEAD~1 表示您要回退到上一个提交(最近的提交)。 如果要回退更多的提交,可以更改 1 为想要回退的提交数。

SourceTree客户端进行-回滚操作

commit代码后,未推送到远程仓库时,发现提交错(如多提交了文件)了,这时候只需要选择本地分支 在历史提交记录中,找到刚提交的节点:右击-代码回滚一下即可。这时本地分支会出现"Revert"字样;
推送按钮会出现提示推送的角标,这时候你可以直接推送一下,注意 此时的推送,远端是不会有变化的!

只不过是推送一些日志记录或者其他与代码无关的。

或者也可以提交好正确的代码后,最后再一起推送到远程。

客户端操作:

  • 历史(左侧面板)
  • 查看提交记录
  • 提交回滚
    在退回之前(如果已经又修改过本地代码的情况时,建议先把本地未暂存的文件先进行贮存, 因为贮存后本地工作区就变成干净的状态了,然后再进行代码回滚操作)

选择一条要回滚的记录、右键提交回滚

回滚操作后,历史记录会出现一条 带有 Revert的记录(此时注意观察本地代码会发现,已经变成此次版本的代码了)

特殊情况

就是回滚后发现我们上次一的代码是没有错误的!此时,我们回滚后写的代码就已经没了!!!

而这种情况,就需要再回滚一次 ,第 2 次回滚也就是撤销上一次的回滚操作。这时候本地分支的节点上会出现 Revert Revert 的字样。 有 2 个 Revert

客户端的推送按钮也会出现提示:推送的角标。 此时会发现本地代码就已经恢复到我们想要回滚的版本了。

如果有贮藏的代码,此时就可以先取出应用贮藏的代码(有冲突合并),最后将所有代码一起 commit、push提交到远程仓库即可。

push远程仓库后的【代码回滚】(也就是重置到此次提交的操作)

重置(当前分支)到此次提交:是指本地代码已经commit了,并且推送(push)到了远端仓库时的情况。

三种方式:

合并方式 说明
软合并(暂存区) 软合并:是指将此次提交回滚到指定提交位置,但这个过程中会将修改过的文件暂存到暂存区
混合合并(未暂存区) 混合合并:是指将此次提交回滚到指定的位置,但这个过程中不会将修改过的文件暂存到暂存区,而是将修改过的文件存放在未暂存文件区
强行合并 强行合并是:指将此次提交回滚到指定的位置,但这个过程中将直接丢弃之前修改的所有文件(因此在选取此种合并时需要考虑清楚,避免一些不必要的麻烦)。

场景1

发现推送了错误代码 到远程仓库,又不想重新写好正确代码后进行提交推送,来覆盖错误代码

此时就可以使用:重置当前分支到此次提交方式来回滚代码。

SourceTree客户端具体操作:

  • 选择刚刚推送分支的节点的前一个或者某个节点
  • 右击"重置当前分支到此次提交"
  • 选择使用模式

特别注意

如果在你提交之前,有未拉取的代码,这个时候得注意了,应该拉取远程代码完成后,再进行commit。否则经过上面的操作,会把别人提交的代码回退回去!!!

push代码失败情况

场景1(non-fast-forward 错误)

本地代码修改后进行了 commit。 此时正打算推送到远程,发现远程库有人比自己早一步提交了代码。

此时尝试拉取远程库,报错:

当使用 Git 推送代码时遇到non-fast-forward错误,通常是因为:

  • 原因 1: 远程分支的更新落后于本地分支
  • 原因 2: 远程分支有新的提交未被本地同步

显然上面遇到的问题就是原因 2造成的。

  • non-fast-forward错误的核心原因是: 本地分支的最新提交落后于远程分支,即远程仓库有其他人推送了新代码,而你的本地分支没有及时拉取这些更新。直接推送会导致远程分支的历史被覆盖,因此 Git 拒绝了这次推送。

解决方案

1、先拉取再推送
  1. 拉取远程分支的最新代码

    git pull origin develop

    这会将远程develop分支的更新合并到本地,解决分支历史不一致的问题。

  2. 如果拉取时出现冲突(可选步骤)

    如果拉取过程中出现冲突(Conflict),需要手动解决冲突:

    • 打开冲突文件,

    • 删除<<<<<<<=======>>>>>>>标记,保留正确的代码。

    解决后提交修改:

    sql 复制代码
    git add .
    git commit -m "解决冲突"
  3. 再次推送代码

    perl 复制代码
    git push origin develop

但是此时的情况我们拉取不了代码,也提交了不了代码,所以这种情况方法1 是不行的,需要使用下面方案2。

2、commit代码回滚(推荐)

特别注意

执行完回滚命令操作后,会发现本地commit提交的代码已经回退了,回到了未提交的状态。此时千万不要直接提交!

解决步骤:

  • 回滚commit代码(git reset --soft HEAD~1
  • 贮藏本地文件(git stash
  • 拉取远程文件
  • 应用贮藏(应用后有冲突进行合并解决)
  • push提交到远程
相关推荐
快起来别睡了20 分钟前
前端设计模式:让代码更优雅的“万能钥匙”
前端·设计模式
EndingCoder39 分钟前
Next.js API 路由:构建后端端点
开发语言·前端·javascript·ecmascript·全栈·next.js·api路由
2301_810970391 小时前
wed前端第三次作业
前端
程序猿阿伟1 小时前
《深度解构:React与Redux构建复杂表单的底层逻辑与实践》
前端·react.js·前端框架
酒酿小圆子~1 小时前
【Agent】ReAct:最经典的Agent设计框架
前端·react.js·前端框架
浩星1 小时前
react+vite-plugin-react-router-generator自动化生成路由
前端·react.js·自动化
快起来别睡了1 小时前
前端存储新世界:IndexedDB详解
前端
阳火锅1 小时前
# 🛠 被老板逼出来的“表格生成器”:一个前端的自救之路
前端·javascript·面试
Hilaku1 小时前
我给团队做分享:不聊学什么,而是聊可以不学什么
前端·javascript·架构
土豆_potato2 小时前
5分钟精通 useMemo
前端·javascript·面试