刚开始使用 Git 时,你可能会觉得它很吓人。我们大多数人只停留在基础操作:git add
,git commit
,和 git push
,老实说,这些操作大多数时候都能搞定……直到有一天不管用了。总有一天你会遇到麻烦——一个混乱的历史,一个坏掉的分支,或者一个你完全追查不到的 bug。
这时,这10个Git操作就成了我们的救命稻草。
1. git reflog
曾经犯过如此严重的错误,恨不得时光倒流?git reflog 就是那隐藏的时间机器。
它会跟踪你在仓库中做的每一件事——甚至是你以为丢失的提交。
何时使用:
- 你误删了一个分支。
- 你需要在错误的重置后恢复一个提交。
输入:
git reflog
2. git cherry-pick
想象一下,在另一个分支上有一个完美的提交需要,而现在你又不想合并整个分支时,却需要这个提交。这时就可以用 git cherry-pick
命令。
它允许你从一个分支中挑选特定的提交并合并到另一个分支中。
什么时候用:
- 将
feature-branch
中修复的一个 bug 应用到main
,但不想合并整个分支。
使用命令:git cherry-pick <commit-hash>
3. git bisect
遇到一个突然出现的 bug 时,无需手动逐一排查每个提交,让 Git 来帮你排查。
它能做什么:
在你的提交历史中进行二分查找,找到引入错误的那个确切提交。
什么时候用:
- 当你遇到一个 bug,但不确定是哪个提交引起的。
命令:(注:)
git bisect start git bisect bad # 标记当前提交为错误 git bisect good <commit-hash> # 标记已知的好提交
注:
Git 会一步步缩小范围,直到找到问题的根源。
4. git stash pop
你可能遇到过这种情况——正在编码中途时,突然接到一个关键的 bug 报告。你需要切换分支,但又不能丢失当前的工作。
它干了什么。
- 暂存未提交的修改,以后再处理。
为什么用 git stash pop
?
git stash
保存工作,而 git stash pop
则会恢复它并从暂存中移除,保持整洁。
命令行:
git stash pop
5. git reset --soft
是否曾经提交后发现还觉得不妥?也许你忘记和上一个提交合并了?
它做了:将你的提交移回暂存区,保留所有修改。
什么时候用:
- 你想要重做某个提交,但不想丢失进度。
命令行:
git reset --soft HEAD~1
(回退到上一个提交,但保留工作区中的更改)
6. git blame
是的,这个名字听起来确实有点责备的味道,但其实它并不是要推卸责任(或者也可能是真的)。
它的作用是:
显示文件中每行最后的修改者。
什么时候用:
你正在尝试理解某个特定改变的原因。
指令:
例如使用git blame <文件>
来查看文件的修改历史。
7. git log --oneline --graph
查看具有多个分支的仓库可能会让人感到不知所措。此命令可以让你从高处概览你的项目。
它能做什么:以简单易懂的格式显示你的提交记录。
什么时候使用:
理解一个分支的历史,或者看看分支是怎么分叉和合并的。
命令行输入:
git log --oneline --graph --all
8. git clean -f
有时候,你的工作目录会变得乱七八糟——到处都是未跟踪的文件。git clean
就像给你的仓库做了一次大扫除一样。
它的功能是:
从您的工作文件夹中删除未被追踪的文件。
适用场景:
- 你尝试过
git pull
,但是由于存在冲突的未跟踪文件,git pull
失败了。
运行:
git clean -f
(强制)清理工作目录中的未跟踪文件
9. git rebase -i
交互式变基是清理杂乱提交历史的利器。
允许你在进行重新整理时合并、编辑或删除提交记录。
用在哪种情况:
在合并前,让提交记录看起来整洁而专业。
命令:
git rebase -i HEAD~<提交次数(数字)>
小技巧:在公共分支上尽量少用这个,以免发生冲突。
10. git diff --staged
看看哪些改动已经被暂存,这样岂不是很方便?这时候用 git diff --staged
正好。
它会做什么:
显示你的暂存区(staging area)和上一次的提交之间的差异。
什么时候用这个:
- 在提交之前再次确认暂存区的更改。
输入命令:
git diff --staged
哪些命令你觉得比较新?或者你有没有一个被忽视的最爱命令,没有被列出来?来评论区分享一下吧!
共同学习,写下你的评论
评论加载中...
作者其他优质文章