Git 不要只会 pull 和 push,试试这5条高级提效命令!

嘿,伙计们!每天光靠拉拉推推的 Git 操作是要混到什么时候?来点高级货色,让你在同事面前装 X 的时候多一点底气。今天,哥们儿给你带来了 5 个提升效率的 Git 命令,帮你从菜鸟迅速进阶为老鸟!

已收录于,我的技术网站:ddkk.com 里面有,500套技术系列教程、1万+道,面试八股文、BAT面试真题、简历模版,工作经验分享、架构师成长之路,等等什么都有,欢迎收藏和转发。

1. stash:存储临时代码

有时候你写了一半的代码,突然领导叫你修个紧急 bug,手上的改动还不能 commit,这时候就需要 stash 大法。

基本用法
代码语言:javascript
复制
# 存储当前的工作现场
git stash save "修 bug 之前的中断点"

这个命令会把你当前的改动保存起来,包括工作区和暂存区的内容。这样你就可以切换到其他分支去修 bug 了。

代码语言:javascript
复制
# 查看 stash 列表
git stash list

用这个命令可以看到所有 stash 的内容,方便你找到刚刚存储的那一个。

代码语言:javascript
复制
# 恢复之前存储的工作现场
git stash pop

恢复刚才的改动,pop 命令会把存储的改动应用到当前分支,并从 stash 列表中删除。要是你不想删,可以用 git stash apply

进阶玩法
代码语言:javascript
复制
# 只存储工作区的改动,不包含暂存区
git stash save --keep-index "仅存储工作区的改动"

这个命令就比较灵活了,适合一些特殊场景,比如你暂存了一部分改动,但还没提交。

代码语言:javascript
复制
# 存储未跟踪文件
git stash save -u "包含未跟踪文件的改动"

一般情况下,stash 不会存储未跟踪文件,用这个命令可以把这些文件也一并保存起来。

2. reset --soft:软回溯

提交后发现有些东西没写好,或者不该提交上去,怎么办?来个软回溯,把 commit 回滚,但保留修改。

基本用法
代码语言:javascript
复制
# 回到上一个 commit,但保留工作目录的改动
git reset --soft HEAD^

这个命令会让你的 HEAD 回到上一个 commit,但是工作区和暂存区的改动都会保留。这样你可以继续修改,再重新提交。

代码语言:javascript
复制
# 回到指定 commit
git reset --soft <commit-hash>

这个命令更强大,可以回滚到任何一个 commit,同样保留改动。

3. cherry-pick:复制 commit

开发分支上写了个牛逼的功能,想赶紧拿到主分支上炫耀?用 cherry-pick,把指定的 commit 应用到当前分支。

基本用法
代码语言:javascript
复制
# 把特定 commit 应用到当前分支
git cherry-pick <commit-hash>

这个命令会把指定的 commit 应用到当前分支,相当于复制了一份改动。非常适合从一个分支把特定改动拿到另一个分支。

进阶玩法
代码语言:javascript
复制
# 处理 cherry-pick 产生的冲突
git cherry-pick --continue

如果 cherry-pick 过程中有冲突,解决完冲突后用这个命令继续。

代码语言:javascript
复制
# 跳过当前冲突的 commit
git cherry-pick --skip

这个命令会跳过当前冲突的 commit,继续应用后面的 commit。

4. revert:撤销 commit

误提交了个 bug,想撤销但不破坏历史记录?revert 就是你的救星。

基本用法
代码语言:javascript
复制
# 撤销特定的 commit
git revert <commit-hash>

这个命令会生成一个新的 commit,反向应用指定的 commit,从而撤销之前的改动。这样历史记录保持完整,非常优雅。

进阶玩法
代码语言:javascript
复制
# 撤销一系列的 commit
git revert <oldest-commit-hash>..<newest-commit-hash>

这个命令可以撤销一系列的 commit,一次性搞定所有需要撤销的改动。

代码语言:javascript
复制
# 自动提交生成的 revert commit
git revert --no-commit <commit-hash>

这个命令会生成一个反向 commit,但不会自动提交,让你有机会先检查一下,再手动提交。

5. reflog:记录 commit 历史操作

手滑误操作了?想找回被 reset 掉的 commit?reflog 是你的时光机!

基本用法
代码语言:javascript
复制
# 查看所有的操作记录
git reflog

这个命令会列出所有的操作记录,包括那些你以为丢失的 commit。每个操作都有一个索引值,可以根据索引恢复到任意一个历史操作点。

代码语言:javascript
复制
# 恢复到某个历史节点
git reset --hard <reflog-index>

使用这个命令,你可以轻松恢复到某个历史节点,把误操作的损失降到最低。

进阶玩法
代码语言:javascript
复制
# 查看某个分支的 reflog
git reflog show <branch-name>

这个命令可以查看某个分支的操作记录,方便你找到特定分支的历史操作。

代码语言:javascript
复制
# 清理 reflog 记录
git reflog expire --expire=now --all

这个命令会清理所有过期的 reflog 记录,保持仓库的整洁。

总结

好了,今天的五个命令绝技就到这里。以后别再天天只会 pull 和 push 了,学会这些高级命令,工作效率提升不说,还能在团队里装 X,成为大家眼中的 Git 高手。

已收录于,我的技术网站:ddkk.com 里面有,500套技术系列教程、1万+道,面试八股文、BAT面试真题、简历模版,工作经验分享、架构师成长之路,等等什么都有,欢迎收藏和转发。