跳到主要内容

· 阅读需 2 分钟
wen

git commit --amend --no-edit

当你觉得你已经把某个 issue 修改好了,可实际上你没能一次性修改好(也许只是有些 typo);

OR

当你确实已经把某个 issue 修改好了,可你忘记了 add 一些文件时,

你可以这么做:

git add .
git commit --amend --no-edit # --no-edit 选项表示不修改 commit message。
git push -f # 如果你已经 push 过了,需要添加 -f 来强制 push。
备注

其实我就是为了体验下 mermaidjs 的 gitGraph 功能而写的这篇文章 😄。

BTW, gitGraph 的 commit message 默认是 rotated 的。

如果你想要更改成水平的,需要在 docusaurus.config.js 中添加如下配置:

+      mermaid: {
+ options: {
+ gitGraph: { rotateCommitLabel: false },
+ },
+ },

· 阅读需 5 分钟
wen

刚过了不惑之年,有点感伤,碰巧听到这首歌,很有感触。

是不是该写封信给 10 年后的自己呢?😀

LRC 歌词:

曲名 : letter song (10年後の私へ)
作词 : doriko
作曲 : doriko
好きな人と歩いた場所も (曾和喜欢的人一起走过的地方)
その時見た景色も (那时曾看到的景色)
振り返らず 今を駆け抜け (统统抛掉 不再回头 向前飞奔)
私は何と出会うの (我将会遇见些什么呢)
立ち止まるほど (驻足不前)
意味を問うほど (探索意义)
きっとまだ大人ではなくて (一定是我还不够成熟)
今見てるもの (现在看到的事物)
今出会う人 (现在遇见的人)
その中でただ前だけを見てる (在这片纷繁喧嚣之中 我只会看向前方)
10年後の私へ (致十年以后的我)
今は幸せでしょうか (现在的你感到幸福么?)
それとも悲しみで (还是正沉浸在悲伤中)
泣いているのでしょうか (默默地流着泪?)
けどあなたの傍に (不过在你的身旁)
変わらないものがあり (依然会有不变的存在)
気付いていないだけで (未能察觉的你)
守られていませんか (依然在被守护着吧)
過ぎし日々に 想いを預け (把思念寄托于流逝的日子里)
時間だけ ただ追いかけてく (只有时间在不停的追赶)
背に寄り添った 誰かの夢に (托付在我肩上的 是谁的梦想)
振り向ける日がいつか来るのかな (总有一天必须要面对的吧)
10年後の私へ (致十年以后的我)
今は誰を好きですか (现在的你喜欢着谁呢?)
それとも変わらずに (还是和以前一样)
あの人が好きですか (继续喜欢着那个人呢?)
けどいつか (不过 现在的你)
知らない誰かを愛する前に (在爱上某个人之前)
自分のことを好きと (“喜欢自己”这句话)
言えるようになりましたか (能否先说出来呢)
大切な人たちは (我所珍爱的朋友们)
今も変わらずいますか (依然在反复平凡地生活吗?)
それとも遠く離れ (还是已经远去)
それぞれ歩んでますか (踏上了各自的旅途)
けど そんな出会いを (但是在重复了无数次的相遇)
别れを 缲り返して (和离别之后)
今の私よりも (是否比现在的我)
すてきになっていますか (更有魅力呢?)
10年後の私へ (致十年后的我)
今がもし幸せなら (如果现在的你是幸福的)
あの日の私のこと (从前的我)
思い出してくれますか (能否请你想起来呢)
そこにはつらいことに (回忆中的我)
泣いた私がいるけど (一定在伤心的哭泣吧)
その涙を優しく (请将这眼泪温柔地)
思い出に変えてください (融入记忆的海洋)

· 阅读需 3 分钟
wen

0. 背景

换电脑的时候,需要把一些配置文件从旧电脑迁移到新电脑上,比如 .zshrc.vimrc.gitconfig 等等。 有些文件不一定放在 home 目录下,比如 .ssh/config.config/.starship.yaml , 这些文件手动迁移的话,比较麻烦。 所以需要一个工具来管理这些配置文件。

1. 具体需求

  • 支持多平台,比如 macOS、Linux、Windows。
  • 支持版本管理,比如 git。
  • 支持模版。

大概调研了一下,发现有这么几个工具可以管理 dotfiles:

  • chezmoi
    • Golang 写的
    • Github Star 10.2k
  • dotbot
    • Python 写的
    • Github Star 6.5k

chezmoi 满足要求,而且是用 Golang 写的,没有什么依赖,所以就用 chezmoi 了。

2. 安装

sh -c "$(curl -fsLS get.chezmoi.io)"

其他安装方式见 Install

3. 使用

3.1 初始化

提示

初始化之后,会在 home 目录下生成一个 ~/.local/share/chezmoi 目录(本地仓库),用来存放 chezmoi 的配置文件。 可以通过 chezmoi cd 命令进入该目录。

3.2 添加文件

3.3 更新文件

提示

更新了文件了之后,记得提交到远程仓库。可以参考上一节。

3.4 从远程仓库拉取文件

远程仓库有更新了,需要拉取到本地。

chezmoi update

等价于

chezmoi git pull origin main
chezmoi apply

3.5 扩展使用

3.5.1 模版

chezmoi 支持模版,可以为不同的 host 生成不同的配置文件。

比如,我要为不同的电脑配置不同的账号名,可以这样做:

  • 创建 ~/.account.json 文件,内容如下:
~/.account.json
{
"name": "thewang"
}
  • ~/.config/chezmoi/chezmoi.toml 中配置 data 字段。
~/.config/chezmoi/chezmoi.toml
[data]
name = "thewang"
  • 添加文件
chezmoi add --autotemplate ~/.account.json

{
"name": "{{ .name }}"
}

· 阅读需 3 分钟
wen

0. 背景

之前一直用Alfred 3的 snippets 功能,但是Alfred的 snippets 功能是收费的。

最近发现了RaycastRaycast的 snippets 功能是免费的,而且Raycast的 snippets 功能是开源的,可以自己写。

所以打算把Alfred的 snippets 迁移到Raycast上。

1. 迁移 Alfred 的 snippets 到 Raycast

Alfred 的 snippets 文件的格式与 Raycast 的 snippets 文件的格式不同, 所以需要先将 Alfred 的 snippets 文件转换成 Raycast 的 snippets 文件。

1.1 Get Alfred Snippets Files

打开AlfredSnippets功能,点击Export按钮,导出Alfred的 snippets 文件。 Alfred 3 的 collections 不支持批量导出,所以需要一个一个导出。🐶

img

1.2 Convert Alfred Snippets to Raycast Snippets

新建一个文件夹,把导出的 Alfred的 snippets 文件放到这个文件夹里面。

然后在这个文件夹里面新建一个 convert-alfred-snippets-to-raycast-snippets.sh 文件,内容如下:

convert-alfred-snippets-to-raycast-snippets.sh
#!/bin/sh -e
# Script for converting Alfred snippets to Raycast snippets
# Usage: chmod +x convert-alfred-snippets-to-raycast-snippets.sh; ./convert-alfred-snippets-to-raycast-snippets.sh
# NOTE: Install jq before running this script

# List up all *.alfredsnippets files and rename them to *.zip
for file in *.alfredsnippets; do
mv "$file" "${file%.alfredsnippets}.zip"
done

# Unzip all *.zip files and get the folders name
for file in *.zip; do
unzip -o "$file" # -o: overwrite existing files without prompting
done


# Merge all *.json files to one file for Raycast snippets
jq -s 'map(.alfredsnippet | {name, keyword, text: .snippet})' *.json > ./output.json

# Clean up all files except output.json
for file in *.json; do
if [ "$file" = "output.json" ]; then
continue
fi
rm "$file"
done

for file in *.zip; do
rm "$file"
done

for file in *.plist; do
rm "$file"
done

# You can now import the output.json file to Raycast

echo "Done! 🎉 You can now import the output.json file to Raycast -> Import Snippets"

也可以从 Github gist: convert-alfred-snippets-to-raycast-snippets.sh 下载。

备注

该脚本执行需要先安装jqjq是一个命令行下的JSON处理工具。

jq的 mac 的安装方法: brew install jq。 也可以参考官网

执行下面的命令:

chmod +x convert-alfred-snippets-to-raycast-snippets.sh
./convert-alfred-snippets-to-raycast-snippets.sh

会在当前文件夹生成一个 output.json 文件。

1.3 Import Raycast Snippets

打开Raycast,然后点击Import Snippets, 选择上一步生成的output.json文件,导入Raycast的 snippets。

Reference

Migrating Alfred Snippets to Raycast