-
rebase family
A,B两分支都在共同的基上有各自的修改,如果希望把A分支(当前分支)的修改建立在B分支修改的基础上,即:共同的基 + B分支的修改 + A分支的修改:
git rebase <branch-B>
如果B分支在远程,可以拉取的同时rebase:
git pull --rebase origin <branch-B>
批量处理之前的n个commit:改名、多合一、删除
git rebase -i HEAD~n
pick保留,s/squash合并,r/reword改名,d/drop删除
—
cherry-pick
将某个分支的连续某几个commit合并到当前分支
git cherry-pick <commit-id-begin>.. <commit-id-end>
-
记录各种奇怪的bug和解决过程。
“事件簿”是因为debug时抽丝剥茧的过程和阅读推理小说有异曲同工之处。
-
参考教程:https://mp.weixin.qq.com/s/w_Z2ftOnb4VtB4jUaMF0fw
运行gdb:gdb 可执行文件,例如gdb /root/abacus-develop/build/abacus
用gdb调试程序:r (run)
断点:b 文件:行数,例如b /abacus/source/module_cell/module_symmetry/symmetry.cpp:1049
查看所有断点:i b (info breakpoints)(可以看到每个断点的编号)
删除断点:clear
删除特定断点:delete 断点编号。可以一次操作多个,比如delete 1-4
设置变量断点(当变量值改变时停下,显示下一行的内容):watch 变量名
查看变量的值
单次:p 变量名 或 print 变量名
每个断点都显示:display 变量名
查看显示列表: info display (可以看到每个显示项的编号)
取消显示:undisplay 编号
查看数组的值(p/print/display)
display *数组名@区间长度,例如 display *rotpos@12
继续,往下运行一步:n (next)
继续,直至下一个断点:c (continue)
查看调用堆栈:bt (backtrace),同where
-
梦开始的地方。
不必去追悼那有始无终的第一段工作,以及之后没能战胜内心抗拒导致失去的大半年。这一切连锁反应,杂乱无章,都可以视作铺垫,一切都是为了让4月的世界线收束来得更加激动人心。