用Git命令解决常见场景

本文主要归纳一下git的学习记录,在开发期间发现了git在sourcetree的处理不是很好,对于多选文件的丢弃这点不是很方便,所以做一个记录,由于项目中有新建的文件,所以被识别为未跟踪的文件,但我不需要这些文件了,想要批量处理掉,所以记录一下用命令行一次性丢弃未跟踪文件的方法,同时也记录一下撤销push请求的git记录。

Untrace类型文件

"Untracked files" 指的是在版本控制系统中(如 Git)的代码库中存在但尚未被版本控制追踪的文件。这些文件包括在代码库中,但 Git 不会监视它们的更改或将它们包含在版本历史记录中。

当你在 Git 仓库中创建新文件时,这些文件默认是未追踪的。未追踪的文件不会被 Git 记录,因此它们不会出现在版本历史记录中,也不会被包含在提交中。

查询未跟踪文件

使用命令行 丢弃 untrace(未跟踪)的文件,这里在sourcetree中有六个未跟踪的文件,在sourcetree中可以使用右键来对不需要跟踪的文件进行丢弃,但是一个个的去丢弃比较麻烦,我也试过用全选加丢弃快捷键来进行丢弃,但效果不是很好

所以建议使用git命令来进行文件的丢弃

先用git status来检查当前项目的修改状态

可以看到有这么几个标红的文件,并且类型为Untracked files,就是未跟踪的文件

清除未跟踪文件

想要清除未跟踪的文件 一般是用 git clean 来进行清除,用于从工作目录中删除未追踪的文件,但是创建文件的时候,可能同时创建了文件夹,所以git也提供了一个后缀来修饰命令,加上-d表示删除未被追踪的目录。

如果不加 -d,则 git clean 只会删除未被追踪的文件而保留未被追踪的目录。

-f: 表示强制执行,即不会提示确认,直接删除未追踪的文件。

因为我用git status 提前查询了未跟踪的文件,所以这里我直接删除掉加上-f

清除后重新看下git status来看下当前分支的情况。

可以看到当前分支是没有改动的。

撤回已push代码

在日常开发可能会经常遇到某些功能实现了,产品又不需要的场景

当前这提交是我不需要的,但是已经push到分支上面去了,如果来解决这问题,需要我们把已经提交的代码撤回

如果是在自己的项目的开发环境可以直接执行

js 复制代码
git reset --hard HEAD

将当前分支的 HEAD 移动到前一个提交,即删掉本地最后一个commit

然后再使用

js 复制代码
git push --force-with-lease

推送到远程删掉最后一个commit。

git cherry-pick HASH 最后本地恢复最后一个commit。

git reset --hardgit push --force-with-lease 是一种强制推送的操作,会修改远程仓库的历史记录。在多人协作的项目中,强制推送可能会影响其他开发者的工作

所以上面的方法并不是最推荐的

使用 git revert 撤销提交

先通过git log 来查找最后一次提交的hash

js 复制代码
git log

找到对应的hash值来进行

到命令行中直接执行

js 复制代码
git revert <commit-hash>
git revert bc4b4198b43ae601f05d25d34f0cff65240525f4

然后再进行提交

js 复制代码
git push origin <branch-name>

其中 <commit-hash> 是你要撤销的提交的哈希值,<branch-name> 是你的分支名称。

对比一下可以看到先后两次提交

相比起之前的强制提交会更加的友好,不会因为其他开发者拉取分支导致分支删除,然后产生冲突。

总结

本次总结了两个日常开发经常可能会遇到的git操作场景,减少使用强制提交,给每个提交都留下记录,避免开发过程中的开发者直接的分支冲突,是一个很关键的点。

🙏 感谢您花时间阅读这篇文章!如果觉得有趣或有收获,请关注我的更新,给个喜欢和分享。您的支持是我写作的最大动力!

往期好文推荐

相关推荐
霍理迪2 小时前
CSS——背景样式以及雪碧图、渐变
前端·css
jump_jump5 小时前
基于 Squoosh WASM 的浏览器端图片转换库
前端·javascript·性能优化
小二·9 小时前
前端监控体系完全指南:从错误捕获到用户行为分析(Vue 3 + Sentry + Web Vitals)
前端·vue.js·sentry
盖世英雄酱581369 小时前
Java 组长年终总结:靠 AI 提效 50%,25 年搞副业只赚 4k?
后端·程序员·trae
阿珊和她的猫10 小时前
`require` 与 `import` 的区别剖析
前端·webpack
+VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue在线音乐播放系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
谎言西西里10 小时前
零基础 Coze + 前端 Vue3 边玩边开发:宠物冰球运动员生成器
前端·coze
code bean10 小时前
Flask图片服务在不同网络接口下的路径解析问题及解决方案
后端·python·flask
+VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue律师咨询系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
努力的小郑10 小时前
2025年度总结:当我在 Cursor 里敲下 Tab 的那一刻,我知道时代变了
前端·后端·ai编程