这5个Git技巧我用了两年才知道,第三个太实用了

王尘宇 实用技巧 2

用了快五年Git,有些命令是最近两年才发现的。写出来,可能有人跟我一样一直在绕远路。

1. git bisect — 自动二分定位bug。场景:你知道某个版本的代码是正常的,现在的代码出问题了,中间可能经过了上百次提交。用bisect告诉Git「这个commit是好的,当前是坏的」,它会自动二分定位到出问题的那次commit。具体操作:git bisect start → git bisect bad(标记当前为坏的) → git bisect good commit-hash(标记那个好的commit)→ Git会自动跳到中间点让你测试。测试完标记 git bisect good 或 git bisect bad,继续二分,直到定位到具体的坏commit。去年一次排查线上bug,用这方法三分钟定位到了问题提交,手动排查的话可能要一个个翻几十个commit。

2. git reflog — 后悔药。不管你做了什么操作——reset错了、删了分支、rebase翻车——只要没有执行git gc,reflog都能找回来。git reflog 列出你所有操作的历史,找到想要恢复的状态的hash,git reset --hard hash 直接回去。救过我至少五次。

3. git stash push -m 备注 — 暂存加备注。之前一直用 git stash 不加描述,等堆了五六个stash之后根本分不清哪个是哪个。加了 -m 描述之后,git stash list 一目了然。另一个实用的:git stash pop --index 恢复stash的同时保留暂存区的状态。

4. git log -S 关键词 — 搜索代码变更历史。比如你想找「这个函数是什么时候被删掉的」,不用翻整个历史记录,git log -S functionName 直接列出所有增加或删除了这个关键词的commit。配合 -p 参数还能直接看diff。

5. git worktree — 同时操作多个分支。传统做法是stash当前改动→切分支→干活→切回来→pop stash。用worktree可以直接在不同目录下同时checkout不同分支,不需要stash来回切换。git worktree add ../feature-branch feature-branch 在上级目录创建一个新文件夹,里面是feature-branch分支的内容。两个目录可以同时工作,互不影响。处理线上紧急bug修复的时候特别好用——主目录继续开发,worktree目录切到master紧急修bug。

标签: Git 编程技巧 版本控制 开发工具 实用技巧

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~