git reset test.txt #将指针后移
git checkout test.txt #重新检出一份代码,检出的版本是当前workspace 最新的commit版本
git reset test.txt #无改变,因为未受控,未追踪
git checkout test.txt #撤销修改内容
git reset test.txt #返回到未add 的状态
git checkout test.txt #撤销修改内容
##对于修改已经commit 到本地仓库的
git log -n 2 ##找到上一次commit pre-ID
git reset pre-ID ## 将workspace 恢复到上一条commit,即撤销本次commit
git status ## 可以看到文件又回到add 未commmit状态
git reset ID
git status
git checkout XXX XXXXfile
git reset --hard ID ## --hard 表示回退指针再恢复文件内容
## 即--hard == reset + checkout
git status
# 以下摘自https://git-scm.com/book/zh/v2
虽然在调用时加上 --hard 选项可以令 git reset 成为一个危险的命令(译注:可能导致工作目录中所有当前进度丢失!),但本例中工作目录内的文件并不会被修改。 不加选项地调用 git reset 并不危险 — 它只会修改暂存区域。
git pull = git fetch + git merge
## git 会进行智能合并,不能自动解决冲突的,会变成nnmerge 状态,需要手动编辑合并
是挑选出特定的commit , 推送到另一个分支中
sed -i "/key/c\modify key line " file
#把file 中带有 key 的所有行替换为modify key line
eg.
change_list=`cat temp3.txt `
for i in ${change_list}
do
if [[ $exp ]]; then
sed -i "/${i}/c\\${i} <-- change" temp2.txt
fi
done
在exit 0 前面插入一行:i
sed -i '/^exit 0/i \/sbin\/start ttyS0' /etc/rc.local
在exit 0 后面插入一行:a
sed -i '/^exit 0/a \/sbin\/start ttyS0' /etc/rc.local
处理同一个打印结果 中,取多行标题及关键字匹配行
accurev show wspaces | head -n 5 ; accurev show wspaces | grep EPDG_R16
以上accurev show wspaces 执行了两次,在两次结果里各取结果 再拼接,效率较低
sed -n '1,5p'
sed -n '/xxxxx/p'
sed -n '1,5p;/^EPDG_R16_xxxx/p'
使用sed 将两个条件用分号串成多个条件,对结果进行“或关系”匹配
accurev show wspaces | sed -n '1,5p;/^EPDG_R16_xxxx/p'
Stream #
| Target X-Action
| | X-Action
paste text1.txt text2.txt
B="case_"${A}".test"
cat temp.txt | while read line
do
echo MME_case${line}.test >>temp_MME.txt
done
从左边开始匹配:# ## 从右边开始匹配:% %% 最大化匹配:叠号 ## %% (从左/右匹配,当匹配到多个关键符时,匹配到最后一个停下) 最小化匹配:单号 # % (从左/右匹配,当匹配到多个关键符时,匹配到第一个停下) 从左匹配,* 号放在匹配符左边: */ *. *- 从右匹配,* 号放在匹配符右边: /* .* var=/vob/lcf/test.txt 常用取文件名:剩下的是从左起最后一个/的右边部分 ${var##*/} 常用取后缀:剩下的是从左起最后一个.的右边部分 ${var##*.} 常用取路径:剩下的是从右起第一个.的左边部分 ${var%/*}
.......
.........
处理 行首空格 行尾空格 空行
去行首的空格
sed 's/^[ \t]*//g'
去掉空行
grep -v "^$"
.......