Search -

? gitlab ?    2019-03-26 17:10:57    384    0    0

  1. git reset test.txt #将指针后移
  2. git checkout test.txt #重新检出一份代码,检出的版本是当前workspace 最新的commit版本


test.txt :modify ,未add ,未commit

撤销修改内容

  1. git reset test.txt #无改变,因为未受控,未追踪
  2. git checkout test.txt #撤销修改内容

test.txt :modify ,add ,未commit

撤销 add

  1. git reset test.txt #返回到未add 的状态
  2. git checkout test.txt #撤销修改内容

test.txt :modify ,add ,commit

撤销commit

  1. ##对于修改已经commit 到本地仓库的
  2. git log -n 2 ##找到上一次commit pre-ID
  3. git reset pre-ID ## 将workspace 恢复到上一条commit,即撤销本次commit
  4. git status ## 可以看到文件又回到add 未commmit状态

对于本地仓库已经更新远程最新,想要撤销更新,回退到未更新前的某个commit 的位置

  1. git reset ID
  2. git status
  3. git checkout XXX XXXXfile

等于

  1. git reset --hard ID ## --hard 表示回退指针再恢复文件内容
  2. ## 即--hard == reset + checkout
  3. git status
  4. # 以下摘自https://git-scm.com/book/zh/v2
  5. 虽然在调用时加上 --hard 选项可以令 git reset 成为一个危险的命令(译注:可能导致工作目录中所有当前进度丢失!),但本例中工作目录内的文件并不会被修改。 不加选项地调用 git reset 并不危险 它只会修改暂存区域。
以上,恢复到远程某个commit 时的版本,等到远程稳定时再用git pull 就可以重新再更新到最新


2019-03-26 14:26:33    361    0    0

merge 和cherry pick

merge

merge也是同一分支的远程和本地的合并,即远程分支有修改但未更新到本地的文件,同时在本地被修改commit . 当进行push 的时候会报错,并提示使用git pull 进行更新合并

  1. git pull = git fetch + git merge
  2. ## git 会进行智能合并,不能自动解决冲突的,会变成nnmerge 状态,需要手动编辑合并

merge是分支和分支之间的合并,从一个分支向另一个分支推送全部修改,可以通过命令merge request 进行合并。

这一种合并一般需要用merge request 进行整个branch的合并

cherry pick

是挑选出特定的commit , 推送到另一个分支中

? linux ?    2019-01-29 16:02:24    550    1    0
grep  查找匹配的行
持续更新 ......
 
? shell ?    2019-01-29 15:36:08    294    1    0
  1. sed -i "/key/c\modify key line " file
  2. #把file 中带有 key 的所有行替换为modify key line

eg.

  1. change_list=`cat temp3.txt `
  2. for i in ${change_list}
  3. do
  4. if [[ $exp ]]; then
  5. sed -i "/${i}/c\\${i} <-- change" temp2.txt
  6. fi
  7. done

在exit 0 前面插入一行:i

  1. sed -i '/^exit 0/i \/sbin\/start ttyS0' /etc/rc.local

在exit 0 后面插入一行:a

  1. sed -i '/^exit 0/a \/sbin\/start ttyS0' /etc/rc.local

处理同一个打印结果 中,取多行标题及关键字匹配行

  1. accurev show wspaces | head -n 5 ; accurev show wspaces | grep EPDG_R16

以上accurev show wspaces 执行了两次,在两次结果里各取结果 再拼接,效率较低

  1. sed -n '1,5p'
  2. sed -n '/xxxxx/p'
  3. sed -n '1,5p;/^EPDG_R16_xxxx/p'

使用sed 将两个条件用分号串成多个条件,对结果进行“或关系”匹配

  1. accurev show wspaces | sed -n '1,5p;/^EPDG_R16_xxxx/p'
  2. Stream #
  3. | Target X-Action
  4. | | X-Action
2019-01-29 14:49:09    1623    0    0
Shell if
.........
? shell ?    2019-01-25 15:42:49    785    0    0
paste 按列拼接将文件拼接
 
  1. paste text1.txt text2.txt
直接字符串拼接
 
  1. B="case_"${A}".test"
将文件中的一组字符全部加上一样的前缀和后缀
 
  1. cat temp.txt | while read line
  2. do
  3. echo MME_case${line}.test >>temp_MME.txt
  4. done
? shell ? ? linux ?    2019-01-25 15:30:51    719    0    0

规律用法记忆点tips
从左边开始匹配:#  ##
从右边开始匹配:%  %%
最大化匹配:叠号 ##  %%  (从左/右匹配,当匹配到多个关键符时,匹配到最后一个停下)
最小化匹配:单号 #   %   (从左/右匹配,当匹配到多个关键符时,匹配到第一个停下)
从左匹配,* 号放在匹配符左边: */  *.  *-
从右匹配,* 号放在匹配符右边: /*  .* 
var=/vob/lcf/test.txt
常用取文件名:剩下的是从左起最后一个/的右边部分 ${var##*/}
常用取后缀:剩下的是从左起最后一个.的右边部分 ${var##*.}
常用取路径:剩下的是从右起第一个.的左边部分 ${var%/*}

.......


? gitlab ?    2019-01-17 11:46:46    1433    1    0
? 分区 ?    2019-01-15 18:12:59    621    0    0

使用ssm
将以下 挂载点 的空间
/dev/mapper/centos-home 407G 33M 407G 1% /home
换到 root 下:
/dev/mapper/centos-root      50G 19G 32G 37%  /
......
......

? shell ?    2019-01-11 17:34:45    696    0    0

......... 

处理 行首空格 行尾空格 空行

去行首的空格

 sed 's/^[ \t]*//g'​

去掉空行

grep -v "^$" ​

.......

8/12