一切福田,不離方寸,從心而覓,感無不通。

git 删除历史commit

“没有commit错代码的人,不足以称为高级工程师。——凯天” 你不认识凯天没事,你只用知道代码提交错分支有救就行了。废话不多说,我们进入正题——怎么删除最后一次提交的记录。 删除最后一次提交 命令很简单,但是不能马虎,不能多回滚或者少回滚,不然就麻烦不断了。 主要命令: 第一步:回滚上一次提交 git reset --hard HEAD^ 就很简单,回滚master分支的上一次提交。 第二步:强制提交本地代码 git push origin master -f 由于本地reset 之后本地库落后于远程N个版本,所以需要强制提交。 路上可能遇到的坑: 提交的过程中,有可能没那么顺利。比如提示error: pre-receive hook declined …. 为什么最后强制提交会失效,原因:分支被保护了,无法强制提交。 不着急,不要慌。我们记录距离支成功回滚代码只差最后一步了——解除branch 保护。怎么玩?很简单,进入gitLab。然后找到Settings(需要账户具备该权限),然后找到Protected branches,然后点击Unprotect按钮。(如图) 强制提交错误 解除保护后,再尝试使用强制提交的命令即可。 最后,大功告成。 删除指定commit提交 如果只能删除最后一次提交记录,多少还是有点鸡肋。有时候我们需要删除的可能是中间的两条commit 记录。其实玩法大同小异。 首先我们确认需要删除的commit log id 是多少,比如:我们需要删除的是:21a254a2b7 对应的这条log。 删除前.png 然后使用git rebase 命令,命令的意思是可以改写从 21a254a2b7 commit id 开始后的所有提交记录。 git rebase -i 21a254a2b7^ 执行完这个命令后,就可以看到 21a254a2b7 后的所有commit 记录了。 默认是使用vim 编辑器打开了commit log list。然后我们就可以针对我们不需要的某些log 进行删除了。把原本的pick 单词修改为drop 就表示该commit log 我们需要删除。如下图 修改删除记录.png 并且图片中还有对应的说明解释。 分支删除完成后,保存该文件并退出vim 编辑器。 最后,使用强制更新的命令: git push origin master -f 如果出现“pre-receive hook declined ….”,处理方式参看上面的方案。 全程命令: 删除成功.png 最后删除成功,我们对比下删除前后的log记录。 删除后.png 参考博客: https://blog.csdn.net/QQxiaoqiang1573/article/details/68074847 https://www.cnblogs.com/cppeterpan/p/7289266.html 作者:凯天 链接:https://www.jianshu.com/p/335e5ac0a823 […]

龙生   11 Jan 2021
View Details

Shell echo命令

Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:

  您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串:

  这里的双引号完全可以省略,以下命令与上面实例效果一致:

  2.显示转义字符

  结果将是:

  同样,双引号也可以省略 3.显示变量 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量

  以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:

  4.显示换行

  输出结果:

  5.显示不换行

  输出结果:

  6.显示结果定向至文件

  7.原样输出字符串,不进行转义或取变量(用单引号)

  输出结果:

  8.显示命令执行结果

  注意: 这里使用的是反引号 `, 而不是单引号 '。 结果将显示当前日期

  from:https://www.runoob.com/linux/linux-shell-echo.html

龙生   11 Jan 2021
View Details

Linux touch命令

Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。 ls -l 可以显示档案的时间记录。 语法

  参数说明: a 改变档案的读取时间记录。 m 改变档案的修改时间记录。 c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。 f 不使用,是为了与其他 unix 系统的相容性而保留。 r 使用参考档的时间记录,与 --file 的效果一样。 d 设定时间与日期,可以使用各种不同的格式。 t 设定档案的时间记录,格式与 date 指令相同。 --no-create 不会建立新档案。 --help 列出指令格式。 --version 列出版本讯息。 实例 使用指令"touch"修改文件"testfile"的时间属性为当前系统时间,输入如下命令:

  首先,使用ls命令查看testfile文件的属性,如下所示:

  执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:

  使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:

    from:https://www.runoob.com/linux/linux-comm-touch.html

龙生   11 Jan 2021
View Details