一份几年前的linux命令小手册

前言:

大学里可没有运维这门专业,但一部分人阴差阳错的走上了这条道路。如期初的我,像无头苍蝇一般。没有人指点迷津,对职场也懵懵懂懂的。这几天在简单收拾时,找到了一份几年前打印的10多页纸,记录了一些命令。然后这些命令中的一部分我现在也不知道用法,可能是用的太少,但以前那会儿它也是一份传递,带我领略神奇的命令。仅此记录一下,然后丢弃这几页纸张,化为乌有,轻便前行。

再简单的命令,也可能有我们不知道的用法,因为没有细心研究、探索、追问。再说,温故而知新。

1.系统信息检查

几板斧: uname -a,hostname, ifconfig -a ,date, pwd ,whoami

2.性能检查

检查项 命令 备注
CPU占用率
内存使用率
内存交换区使用率
top
文件系统占用率 df -h
CPU负载 uptime
系统i/o iostat 1 3
系统资源使用情况 vmstat 1 10 每隔一秒刷新一次,刷新10次

3.安全检查

检查项 命令 备注
当前登录用户 who
系统重启情况 less /var/log/boot.log 部分linux发行版不适用
系统日志 less /var/log/messages 部分linux发行版不适用
系统账户检查 more /etc/password
more /etc/password
系统登录情况检查 less /var/log/lastloglastlog
系统运行时间 uptime

4.硬件信息

检查项 命令 备注
查看硬件信息 dmidecode
硬件启动信息 dmesg

Server:我是谁,我在哪里...

给你一台现成的服务器,你该如何了解它?(可以是linux的,也可以是Windows,也可能是mac os),但这里更多的假设是linux吧,因为更加常见,假如你ssh到了一台新服务器,除此之外,别人什么都没告诉你,你该怎么办?

我是谁-第一问

hostname

whoamiid

我是谁-第二问

linux有很多发行版本,每个都有点儿不一样,就比如下载软件的命令就是不一样的,不是每台服务器都是你所熟悉的centos,或者 ubuntu。不要去“我以为…”,而是我先确认一下,怎么确认是我们需要思考的。

How to check os version in Linux command line

比如说说 hostnamectl 命令

1
2
3
4
5
6
7
8
9
10
11
root@saltmaster:~# hostnamectl
Static hostname: saltmaster
Icon name: computer-vm
Chassis: vm
Machine ID: 5ff54f44069c4ce289690d8b20a3a8d4
Boot ID: ca1c7b0381c74fadb52f2065c2bf8648
Virtualization: oracle # 是否使用虚拟化,及哪家的虚拟化,我这里是 vagrant + virtaul box启动的一台服务器
# 如果看到的是 Virtualization: microsoft 这种,就说明是微软的,大概率是azure吧.
Operating System: Ubuntu 18.04.4 LTS
Kernel: Linux 4.15.0-91-generic # 内核版本
Architecture: x86-64 #服务器的架构

我在哪里,几点了-第三问

date

tree

ps

systemctl service

出错了,怎么办-

日志
Application Logs
Event Logs
Service Logs
System Logs

疫情的启示[伪上帝之眼]

前言

从武汉封城(2020.01.23)到今天(2020.05.23),正好4个月时间。一年过去了1/3,度过去了2个季节,很多节日(春节、元宵、38、清明、劳动节、青年节…)还有很多我们自己创造出来的节日。但在武汉的氛围里,少些悲伤就是幸运的,节日的快乐变小了很多,心中的畏惧变大了很多。时至今日,出门买菜、坐车也还能看到一些人手上带的一次性手套,还有面罩,至于口罩,是这里的每个人出门的必需品。5月,去过安徽,回过老家,一切大体如初了,武汉成了最不一样的地方,甚至在5月中旬回老家,有的人畏惧我这个从武汉回去的人。在懂事的年纪经历这样一场大事件,而且身处正中心,有些想法还是值得记录,不然哪天忘记了。

以下一部分内容是早在3月份,疫情形势依旧严峻时的所想:

1.保持信息敏感

    社会中大事件的发生,前夕必定有风声,有的人捕捉到了且重视,有的人置若罔闻。而来自专业领域的事情,非专业人士无从判断,但应该学习着去判断去思想前因后果,毕竟就像这次会生死攸关。对于信息来源,那一道看不见的墙在哪里,但也是不同看法的来源地,多听听未必是件坏事情,决定是在自己身心中的不是吗。需要多渠道的去获取关键信息,也需要辨别真伪,专业网站、官方网站的信息不可忽视,有些小道消息也很重要,而且中英文的都需要阅读。如果英文不好,尚可用一些翻译工具。

2.超预期的准备

    疫情期间,我们很多人做的一件事情就是屯东西,因为商店关门了,各种社会交易停止了,包括耐以生存的食物交易也受到了管控。口罩难求,要屯一点;大米不够,要屯一点;卫生纸不足,要吞一点….还有很多很多东西,零食?汽油?酒精?消毒剂?猪肉? 而另一件凑巧的事情就是,春节前期武汉有准备腊肉腊鱼的习惯,这个时候这些荤菜派上了用场,古老的食物做法让我们在特殊的时间里还能享受到肉的味道。但是屯多久的东西了,每个人对持续的时间都有自己的看法,但都是来自自信的第六感。最好还是寻求专业的建议,比如疫情期间的流行病“老师傅”,比如那些有野外生存能力的人。最好,给那第六感的结果来个加倍,或者三倍吧,比如很多人预期1-2个月疫情就会过去,那你就按照3-4个月去储备物品,当然这没什么根据,但有总比没有好,这里的多也比少好。很多我们不了解的事情上,也都这么准备吧。比如外出带几天的干粮,第六感的双倍吧。

3.公共卫生

    口罩、公筷、勤洗手、消毒用品…这些在我们平日里不太注重的东西,一些就在这样的时候成了我们保护自身的唯一方法。口罩,我以为是属于明星的必需品,或是用来冬天御寒的,更别提医用口罩,每家每户都缺少。今后每年的流感季节,我们也应该多嘱咐我们自己和家人朋友,多注意在人多的地方戴口罩,勤洗手,家庭消毒等等。如果,是做餐饮的,最好常带口罩,至少飞沫传播会被大大的减少。也不要随意用手揉眼睛,可能会让手上的细菌病毒等从眼睛粘膜处进入体内。题外话:口罩也是有好处的,别人看不见你的生气或是喜悦,也看不见你的全部五官,神秘感倍增,勇气有时候也倍增。

对了,口罩遮面,眼睛就成了“窗口”,原来每个人的“窗口”还挺好看,也留下了想象的空间。

4.心态心理

    在强大的病毒氛围下,每个人如兵临城下一般,害怕肉眼看不见的东西闯入自己体内。有人上门量体温时,觉得自己有点热,心想是不是发烧了,可能又有点儿胸闷,是不是呼吸有点问题。心理的压力大小直接影响免疫力的强弱,但这种模糊的关系也是看不见摸不着的。心理受到影响,做事情的态度也自然会被影响到。比如我就无心专心的完成一些事情,心中杂念挥之不去。最好的方法,还没每天给自己设定几个任务,完成了就打个勾,不让自己漫无目的在电脑前,或者门前。

5.随身携带随时准备着

    听闻因为春节回家的缘故,很多人没有选择带电脑回家,可谁知这个春节有点儿太长了,于是无法在家办公。与电脑类似的东西,还有比如剃须刀,充电器,耳机,相机,每个人的职业不一样,总有些工具需要常用到,有条件的最好还是常带在身边,不然意外的就是很意外的。另一个方面讲,出差的我不喜欢携带太多东西,有些可有可无的不带,轻松上阵,上下车的步伐都轻盈一些。如何取舍,视情况而定了。

6.富贵险中求

  无,留点遐想的空间。



后记: 2020.05.20在小区楼下做的核酸检测,今天终于可以查到结果了,正常。

那些容易被忘记的小事儿-Tech

有些东西容易记住,有些往往可以往脑子里记却总是忘记,没办法了。

shell命令

命令行窗口可以使用以下的编辑命令,就是当你登录到一个服务器时,或者打开一个shell时用的。

Ctrl-R 搜索输入命令的历史
!! 重复上一个命令
!$ 上一个命令中最后一个参数
Ctrl-w 删除上一个输入的词
Ctrl-U 从光标位置删除到行首
Ctrl-K 从光标位置删除到行尾

Sublime快捷键

在每一行行首增加字符串

第一步:选中全部内容 ctrl+A
第二步:进入待操作状态,然后 ctrl+shift+L

但实际,在我的MBP上是 command + shift + L

vim 列编辑

链接:https://tlanyan.me/vim-colume-edit-summary/

步骤:

  • 1.在 普通模式 按 ctrl+v 进入 可视块 模式;
  • 2.使用 hjkl 移动光标选择要编辑的块;
  • 3.视情况而定(看下面);
  • 4.按 esc 退出(非必须)。
操作 第3步的按键
光标前插入 shift+i
删除 x 或者d
替换 r

PROMPT_COMMAND

Bash shell executes the content of the PROMPT_COMMAND just before displaying the PS1 variable. (即添加显示在PS1前面的内容)

export PROMPT_COMMAND="echo -n \(dev\)"
export PROMPT_COMMAND="date +%k:%m:%S"

If you want to display the value of PROMPT_COMMAND in the same line as the PS1, use the echo -n as shown below.
export PROMPT_COMMAND="echo -n [$(date +%k:%m:%S)]"

效果如下:

1
2
vagrant@minion1:~$ export PROMPT_COMMAND="echo -n \(dev\)"
(dev)vagrant@minion1:~$

awk内建变量

使用awk时,有时第一行是列名,需要过滤掉,从第二行开始显示。

kubectl get node | awk 'NR!=1'

NR(Number of Record) 表示的是已经处理过的总记录数目,或者说行号, 上面的 NR!=1 表示不打印第一行,相应地,NR!=2 表示不打印第二行.

只打印最后一列
kubectl get node | awk '{print $NF}'

TCP连接的状态详解以及故障排查

https://blog.csdn.net/hguisu/article/details/38700899

wPC8yQ.png

TCP状态及其描述如下表。

状态 描述
LISTEN 等待来自远程TCP应用程序的请求
SYN_SENT 发送连接请求后等待来自远程端点的确认。TCP第一次握手后客户端所处的状态
SYN-RECEIVED 该端点已经接收到连接请求并发送确认。\n 该端点正在等待最终确认。TCP第二次握手后服务端所处的状态
ESTABLISHED 代表连接已经建立起来了。这是连接数据传输阶段的正常状态
FIN_WAIT_1 等待来自远程TCP的终止连接请求或终止请求的确认
FIN_WAIT_2 在此端点发送终止连接请求后,等待来自远程TCP的连接终止请求
CLOSE_WAIT 该端点已经收到来自远程端点的关闭请求,此TCP正在等待本地应用程序的连接终止请求
CLOSING 等待来自远程TCP的连接终止请求确认
LAST_ACK 等待先前发送到远程TCP的连接终止请求的确认
TIME_WAIT 等待足够的时间来确保远程TCP接收到其连接终止请求的确认

sort 用法

https://segmentfault.com/a/1190000005713784
| 选项 | 解释 |
|:—-:|:———————————-|
| -u |去除重复行 |
| -r |sort默认的排序方式是升序,-r是反过来 |
| -n |默认数字按字符来排序(10在排2前头),-n 指明要以数值来排序 |
| -t |指定分隔符 例如: -t : |
| -k |指定按哪一列排序 ,例如 -k 3 |

-k高级用法,例如 “按公司英文名称的第二个字母排序”

参考;

入门gpg

前言

GPG 的全称是 GNU Privacy Guard ,可以看作是一个软件,可以用来进行密钥的管理。其实和我们用的一些图形化的密码管理类似,不过GPG 好像更多是命令行交互的,所以一般人不太习惯。另外,中间包含的概念也较多。

用过enpass, 1password的可以将一些概念类比起来,比如 master password , 子密码

我们应该使用且只使用子密钥,主密钥应该放在一个绝对安全的地方。

安装

在 Mac 上可以使用 Homebrew 安装 gopass

brew install gopass

使用

生成主密钥

1
gpg --full-generate-key

交互

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
➜ gpg --edit-key 771xx601@qq.com
gpg (GnuPG) 2.2.20; Copyright (C) 2020 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

sec rsa2048/00C21CE66A8AE9E0
created: 2020-04-23 expires: 2022-04-23 usage: SC
trust: ultimate validity: ultimate
ssb rsa2048/9DCC33D2FECB246F
created: 2020-04-23 expires: never usage: E
[ultimate] (1). qinrui <771963601@qq.com>

gpg>

请注意上面的字符串”sec rsa2048/xxxxx”,斜杆后面就是”用户ID”的Hash字符串,可以用来替代”用户ID”。

Github Actions E08插播一条消息

前言

消息是个好消息,简单不完全的结果就是:普通组织下的私有仓库可以使用github actions了。题外话:有的消息会影响当天的工作任务,有的消息会影响人的一生。

1. 起因

github actions的免费是我们都知道的,但这句话并不完整、准确。github actions为支持开源,对于public repo是完全免费的,但是对于私有的项目是有时限的。可见下图,可在 https://github.com/features/actions 中找到该信息。

JM5Qvq.png

图1: github actions pricing

正好,有一个项目上,我们想推荐客户使用github actions,最好是能免费使用;即使不能完全免费,如果可以限时免费也是可以的,这样作为开发人员可以尝试一下,并成功后向客户说明情况,以便进一步预估、申请部分费用。这里说到一个点:不谈钱,一切都好说;谈到钱,流程就会麻烦些,毕竟从公司支出的每一笔钱都要有个缘由

客户的项目情况整理如下,因为没有org的管理权限,一些team、org属性并看不到。客户自建了一个org,里边有个team关联着,然后org里的仓库都是private的。

2. 问题过程

时间: 2020.04.08 左右
为了实验一下,我和同事在我自己的 org:cicd_draft 下做实验。将组织下的 repo: api-test-demo下进行了一些尝试。为了模拟客户的情况,打算先将 repo: api-test-demo 从 public 变成 private。 如下图 gc_00
JM53rV.png

图2

首先提示需要 upgrade cicd_draft,点击后提示 upgrade options,如下图
JMqIpD.png

图3

再仔细会想一下,似乎我的org与客户的org,或是我的team与客户的team不太一样,尽管我想把这些变量弄成一致的,以便后续的尝试。也显示一个问题:我还对org team repo这几个东西的属性、类型还不太了解,以及他们之间的关系是否有依赖呢。而后的分析,感觉客户使用的仓库类型不简单啊,可能是个历史遗留产物,见👇

GitHub Actions is not available for private repos in legacy per-repository plans.

legacy的一个意思是: denoting software or hardware that has been superseded but is difficult to replace because of its wide use.

有几点事实如下:

  1. 普通的team- Github Team For Open Source,无法拥有私有仓库。(在4.8号那个时间点,是的)
  2. 客户拥有私有仓库,说明team的属性不是普通的,

3. 转机

源于一条消息: GitHub Free gives teams private repositories with unlimited collaborators at no cost.

因为我的github注册邮箱收到了这个大消息邮件。
JM5xs0.jpg

图4:我的邮件截图

现在这个消息可以在 https://github.com/pricing 网页较上部看到,但估计一段时间后会被其他“大动作”替换掉。

———————分割线———————-

Github team 定义:Teams are groups of organization members that reflect your company or group’s structure with cascading access permissions and mentions.

github repo 类型 、github org 、github team 类型,以及之间的强关系、弱关系。

从个人可以免费创建几个私有仓库,到无限量的私有仓库,又到team的免费升级,越来越免费的策略,降低了成本门槛。


More Ref:

再看git

前言

犹如做手工大多都要用到尺子区度量一样,git也是大多it从业者的必须工具;当然哪怕你不是这个行业的,你也可以用它来做点儿别的,比如仅画一条直线、记录一段文字、存放一个图片。
你可以只用三板斧 git add xx,git commit xx,git push xx,遇到难题大不了删除本地文件,然后重新下载一份;但是你也可以把它玩出花儿来。或者感兴趣的研究一些本后的原理,处理一些复杂的使用场景。最终能达到你的目的即可,且高效一点儿,慢慢来、慢慢学~

每个人的使用习惯和遇到的场景不太一样,只能尽量地讲讲命令的使用,绝对不会覆盖到所有使用场景。况且,条条大道通罗马,git命令也是一样,选择你偏好的就可以了。

主要参考资料如下

1. Git特色

  • 近乎所有操作都是本地执行
  • 直接记录快照,而非差异比较
  • Git 保证完整性

Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。
Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来。

2. 不同状态

git项目的三个阶段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
+-----------------+       +-----------------+       +-----------------+
| 工 作 区 | | 暂 存 区 | | .git目 录 |
+--------+--------+ +--------+--------+ +---------+-------+
| | |
| | |
| checkout repo |
| <--------------------+------------------------+ |
| | |
| git add | |
| +--------------------> | |
| | |
| | git commit |
| +-----------------------> |
| | |
| | |
+ + +

文件可能处于其中之一: 已修改(modified)、 已暂存(staged)、已提交(committed)

  • 已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交表示数据已经安全地保存在本地数据库中。

3. 配置

Git 自带一个 git config 的工具来帮助设置控制用户信息、外观、行为等的配置变量。 这些变量存储在三个不同的位置:

  • 1.系统级
    /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 –system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)
    命令:git config --system -l

    mac OS下 似乎默认没有这个文件 /etc/gitconfig

  • 2.(用户)全局级
    ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 你可以传递 –global 选项让 Git 读写此文件,这会对你系统上 所有 的仓库生效。
    命令如:git config --global -l
  • 3.仓库级
    当前使用仓库的 Git 目录中的 config 文件(即 .git/config):针对该仓库。 你可以传递 –local 选项让 Git 强制读写此文件,虽然默认情况下用的就是它。。 (当然,你需要进入某个 Git 仓库中才能让该选项生效。)
    git config --local -l

每一个级别会覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量,即(用户)全局级 > 系统级

检查配置信息

如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置。

1
2
3
4
5
6
7
8
$ git config --list
user.name=John Doe
user.email=johndoe@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

你可能会看到重复的变量名,因为 Git 会从不同的文件中读取同一个配置(例如:/etc/gitconfig 与 ~/.gitconfig)。 这种情况下,Git 会使用它找到的每一个变量的最后一个配置

你可以通过输入 git config <key> 来检查 Git 的某一项配置

4. 常用命令

参考 https://zhuanlan.zhihu.com/p/107324618 。下面是按照子命令讲解,但如果按照场景讲解可能会更匹配日常使用。

  • git clone/fetch/checkout

    1
    git clone <url> #克隆现有的仓库
  • git branch

    1
    2
    3
    4
    5
    6
    git branch  # 显示当前分支
    git branch -a # 查看本地分支、远程所有分支
    git branch branchName # 新建分支
    git branch -m branchOld branchNew # 修改分支名称,从 branchOld 改为 branchNew
    git push origin --delete dev2 # 删除分支名 dev2 的远程分支,居然一行命令就搞定了
    git branch <branchName> <start point>
  • git checkout

    1
    2
    3
    4
    5
    6
    7

    git checkout branchName #命令会将当前工作分支切换到branchName
    git checkout -b newBranch #从当前分支copy一份到新分支,并切换到新分支下,等同于2步:1-git branch newBranch-git checkout newBranch
    # 加入-B可选参数后会强制创建新分支,并且会覆盖原来存在的同名分支。
    git checkout -- CONTRIBUTING.md #撤消对文件的修改。如果你并不想保留对 CONTRIBUTING.md 文件的修改怎么办?用这个命令
    # 取消暂存的文件
    git reset HEAD <file>

请务必记得 git checkout – 是一个危险的命令。 你对那个文件在本地的任何修改都会消失——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令。

  • git status

    1
    2
    3
    #查看文件状态
    git status #标准输出
    git status -s(或--short) # 简洁输出;新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。
  • git add

    1
    2
    3
    #跟踪(track)新文件,或者说将 文件从 工作区加入到暂存区;在add之前,可以status查看到新文件是 Untracked files
    git add filename #添加指定文件
    git add *.c #添加匹配结果指定的文件
  • git diff

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #diff 比较,命令可以不指定 <filename>,则对全部文件操作
    git diff --staged # 暂存取 vs .git目录/仓库
    git diff --cached <filename> #暂存区 vs Git仓库, --staged 和 --cached 是同义词

    git diff <commit> <filename> #工作目录 vs Git仓库
    git diff <commit> <commit> #Git仓库 vs Git仓库

    git diff branch1 branch2 --stat //显示2个分支所有有差异的文件列表
    git diff branch1 branch2 //显示2个分支所有有差异的文件的详细差异
    git diff branch1 branch2 file_path //显示2个分支指定文件的详细差异
  • git rm

    1
    2
    git rm -f file-path #从跟踪文件列表中清除,并从磁盘上删除文件
    git rm --cached file-path #从跟踪文件列表中清除,仍然将源文件保存在磁盘上
  • git mv

    1
    2
    3
    4
    5
    6
    git mv README.md README

    #运行 git mv 就相当于运行了下面三条命令:
    mv README.md README
    git rm README.md
    git add README
  • git commit

    1
    2
    3
    4
    5
    6
    7
    8
    git commit -m “desc”  # 正常提交
    git commit -a -m “desc” #??
    # -a, --all
    # Tell the command to automatically stage files that have been modified and
    # deleted, but new files you have not told Git about are not affected.

    git commit --amend #有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令来重新提交,这是有交互的
    git commit –amend -m “desc” #追加提交,这是没有交互的
  • git remote
    参见 远程仓库的使用

如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

1
2
3
4
5
git remote #它会列出你指定的每一个远程服务器的简写。 常见输出:origin
git remote -v #显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
git remote add <shortname> <url> #添加一个新的远程 Git 仓库,同时指定一个方便使用的简写:
git fetch <remote> #该命令会访问远程仓库,从中拉取所有你还没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
git remote show <remote> #如果想要查看某一个远程仓库的更多信息,可以使用,例如 git remote show origin
  • git push

    1
    git push origin test:test  # 提交本地test分支 作为远程的test分支
  • git merge

    • [] todo
      (在本地merge分支xx 到master,然后push)
  • git log

    1
    2
    3
    4
    5
    6
    git log <dev> #查看分支 dev 的提交历史记录,默认是时间倒序,最近的提交排在最上面),不写分支名查看当前分支的提交历史记录
    git log --reverse #时间正序显示提交历史记录
    git log --oneline # 一行显示提交历史记录
    git log --graph #图示法显示提交历史
    git log --reverse --oneline --graph #时间正序 + 一行显示 + 图示法显示
    git log -n #显示最近的 n 个提交
  • [] origin 是什么 git 的 origin 的含义 cnblogs.com/xuyaowen/p/git-origin.html

  • [] 追踪关系 –track
  • [] upstream ??

其他:
HEAD 最近一次 commit
HEAD^ 上次提交
HEAD~100 上100次提交

git revert

英文来定义一下 fetch 和 pull 更为明白:

git fetch is the command that says “bring my local copy of the remote repository up to date.”
git pull says “bring the changes in the remote repository where I keep my own code.”

5. 一些场景

  • 建立个人镜像的仓库 mirror
  • 清除github上某个文件的历史版本
  • 命令行提pull request

Pull Request (PR) is a Github feature that allows users to collaborate better together.

hub这个工具可以,以下针对github.com做的测试,如果是对于企业内部的github可能需要区别对待,或测试是否有效。另外,运行 git request-pull master ./这样的命令,只会做pr的内容比较,实际上是不出提交一个pr的

1
2
3
4
➜  api-test-demo git:(test-pr) ✗ hub pull-request  #会出现交互,提示输入 pr 的 comment

#上面完成后,最后输出
https://github.com/cicd-draft/api-test-demo/pull/1

提第一次安装、使用时,提示输入 github.com username,github.com password。参考链接: https://hackernoon.com/how-to-git-pr-from-the-command-line-a5b204a57abhttps://hub.github.com/

  • cherry-pick
    cached 是什么状态

本地和远程的关系,还要把新分支推到远程也就是在远程建立一样的一个分支。所以我们在本地和远程建立分支后还要把他们关联起来,这样才有意义!!!


More Ref:

入手Telegram

听说有很多有趣的组织、个人都有电报,于是想看看。

1. 是什么?

Telegram —— 中文名又称”电报”,或简称”TG”。Telegram 是跨平台的即时通信软件。

作用和特色有点太多,还是直接上图吧👇

Juq1FU.png

更多关于 Telegram 的介绍可以查看 Wikipedia

2. 怎么用

在中国大陆境内无法直接连接,注册和使用都需要科学上网。

自己注册过程如下:

    1. 为了不下载东西,在网页直接注册 https://web.telegram.org/
      多次尝试无法注册,提示如下:
      1
      2
      3
      Too fast
      You are performing too many actions. Please try again later.
      Click for technical details

其实尝试的次数并不多,1-2次后就有以上提示了。+ 86的中国大陆号码似乎收不到验证码

    1. 找一个临时的美国号码

      不太好使

  • [ ] 尚未注册成功

3. 推荐内容

  • todo

More Ref:
Telegram 教程全指南
官网faq

  • Copyrights © 2019-2024 John Doe
  • Visitors: | Views:

请我喝杯咖啡吧~