git 里几个总要查的命令
这些命令每次用都要搜一遍,干脆记在这里。都是在自己的仓库里用过的,多人协作的仓库请先想清楚再动。
改上一次提交
漏加了一个文件,或者提交说明里有错字:
git add 漏掉的文件
git commit --amend # 会打开编辑器改说明
git commit --amend --no-edit # 只补文件,不改说明
已经推送过的提交就别这么干了,除非确定这个分支只有自己在用。
撤销暂存,但保留改动
git restore --staged 文件名
以前一直用 git reset HEAD 文件名,效果一样,新写法的意思更清楚。
找回“丢掉”的提交
reset 错了先别慌,reflog 记着 HEAD 走过的每一步:
git reflog
git reset --hard HEAD@{2}
默认能保留九十天左右,足够反悔了。
看某几行是谁、什么时候改的
git blame -L 40,60 path/to/file
git log -L 40,60:path/to/file # 连同每次改动的 diff 一起看
第二条比 blame 好用得多,能看到这几行完整的演变过程。
临时收起手头的改动
git stash push -m "写到一半的目录页"
git stash list
git stash pop
加 -m 是吃过亏的:stash 一多,列表里全是 WIP on main,根本分不清哪个是哪个。
只拿另一个分支里的一个文件
git restore --source=other-branch -- path/to/file
不用切分支,也不用 cherry-pick 整个提交。
10 月 11 日补充:加了 git log -L 和 stash 的 -m。