【记不住】

git

//配置
git config user.name xx
git config user.email xxxx

//创建仓库
git init
git remote add origin url

//日常
git stash save "msg"
git stash pop 
git stash pop stash@{id}

git add .
git commit -m 'msg'
git commit --amend -m '修改的提交信息'
git restore.		//暂存区还原到工作区
git reset --hard HEAD~0	//用本地仓库还原暂存区+工作区,commit号从0开始
git rebase -i HEAD~n		//在当前分支上,合并包含HEAD在内的n个提交
git push origin master
git push -f origin main
git log --oneline
git log --graph
git clone
git fetch(远程仓库->本地仓库)
git merge
git pull(远程仓库->本地仓库/暂存区/工作区)
//.gitignore
1.md    //忽略1.md文件
build/    //忽略build目录下的所有文件

//用本地仓库还原暂存区+工作区
git reset --hard HEAD~0	
git reset --hard 版本号

//一个已经 `push` 到 `main` 分支的提交,发现有 bug,需要撤销
//本地仓库还原暂存区+工作区,且新增一个【撤销提交】记录。
git revert [commit号]
git revert HEAD~0

//本地仓库最近一次提交HEAD还原到工作区。不会影响暂存区。(新命令)
git restore . 
git restore <filename> 

//优先从暂存区恢复工作区,没有才从 本地仓库最近一次提交HEAD,不影响暂存区(老命令)
git checkout .		
git checkout <filename>	

//本地仓库最近一次提交还原到暂存区。不影响工作区
git restore --staged . 
git restore --staged <filename> 

//撤销 commit,将当前代码回到上一个commit
git reset --soft HEAD~1  

//撤销已push的代码
git reset --soft HEAD~1 //撤销commit:将本地仓库的HEAD指向上一个,同时保留工作目录和暂存区的更改
git push 
git reflog 找到撤销的commit
git reset --hard <commit-hash> 恢复到撤销的commit

//排错(假设提交记录A和记录B之间有错误,记录A正确,记录B错误,但不知道是哪个提交出问题)
git bisect bad B  
git bisect good A
重新编译、运行下看看正确与否。如果正确,输入:git bisect good
继续重新编译、运行下看看正确与否。若正确,输入:git bisect good
...
直到出现错误,输入:git bisect bad
继续重新编译、运行下看看,若错误,输入:git bisect bad
...
最后,git会找到出错的提交记录。
通过git show 记录查看错处记录的提交


//分支
git branch daily		//创建分支
git branch -d daily		//删除分支
git branch -a -vv		//显示所有分支
git checkout daily		//切换分支
git checkout -b daily origin/master//创建本地分支daily并把远程分支origin/master的最新提交作为分支daily的起点
git branch -m old new  //修改分支名称

//合并
git merge feature --no-ff		//git checkout main切换到开发分支(当前分支),将feature(目标分支)上内容合并到main分支,并创建一个新的merge commit
git mergetool			//merge发生冲突时,打开meld处理冲突
git commit -m "merge commit"	//给merge commit提交注释
git clean -f 			//删除.orig文件(合并冲突时由meld创建)

//变基后合并(永远不要在主分支上变基)
git checkout daily
git rebase main     # 将daily从main分支分叉的节点全部放到main最新节点后重走一遍
git merge main      #将feature合并到main,此时不会产生冲突,不用no-fast-forward


//暂存
git stash save "msg"
git stash list
git stash pop stash@{0}
git stash clear

//比较
git diff HEAD <filename>	//查看工作区文件和仓库中该文件最新版本之间的差异
git diff feature main		//比较feature和main分支代码

常用bash





编译指令


g++ -E test.cc -o test.i      //预处理
g++ -S test.i -o test.s      //编译
g++ -c test.s -o test.o	    //汇编(经过汇编器,将汇编代码转换成机器码)
g++ test.o -o test.out     //链接

//静态库
ar -crv test.o libmytest.a 	//静态库
g++ main.cc -o main.out -l mytest.a -L . -static	//静态链接 -l表示静态库名称 -L表示静态库路径 -static表示静态编译

//动态库

//vim

#删除光标到行尾
D/d$
#删除光标到行头
d0
#删除光标到文件末尾
dG
#删除光标所在行及向下2行
d2j

#批量替换
:%s/old/new/gc
#%s表示在当前文件
#old要替换的词
#new新词
#gc替换询问:
y(yes):替换当前词
n(no):跳过当前词
a(all):替换当前词及后面所有待选项
l(last):只替换当前词就停止
q(quit):退出替换模式

//搜索
n下一个
N上一个

正则表达式

()——子表达式
\——转义
*——0个1个或多个
+——1个或多个
?——0个或1个
{m}——固定m次
{m,}——最少m次
{m,n}——至少m个,最多n个
/w——字母或数字
/d——十进制数字
/s——空格
.——任意1个字符
[abc]——一组字符(a或b或c)会产生贪婪匹配:添加?,进行 非贪婪匹配。如:g[a-z]d+?
[^abc]——除去abc以外
^——字符串是否以某字符开头
$——字符串是否以某字符结尾

a{2,3}  最少2个a最多3个a,都匹配
a^以a开头
a$以a结尾

posted @ 2024-02-03 11:38  仰望星河Leon  阅读(22)  评论(0)    收藏  举报