0%

Linux 配置国内源加速,以 Ubuntu 为例子

Steps

运行 command

1
2
3
4
5
# 替换 sources.list 中的源信息
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

# 更新索引
sudo apt-get update

如果配置不生效,查看 sources.list 文件中的源信息,可能不是 archive.ubuntu.com 所以更新失败,比如我的 WSL环境中,原始的源就 security.ubuntu.com 需要把上面的命令改为, 使之生效

1
sudo sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

Reference

安装 shadowsocks 本地客户端记录

安装步骤

查看是否已经安装 python 和 pip, 这里用的是 python3

1
2
3
4
5
6
python3 -v
pip3 -v

# 如果没有安装运行
sudo apt-get install python3
sudo apt-get install python3-pip

配置 douban 源加速

1
2
3
4
5
6
7
8
9
10
11
# 跳转到 $HOME 目录下
cd
# 创建 .pip 目录
mkdir .pip
# 创建 config 文件
vim pip.conf
# 将如下内容写进 config 文件,保存退出
[global]
timeout = 60
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com

安装 python shadowsocks 包

1
2
3
4
sudo pip3 install shadowsocks

# 如果嫌 sudo 累赘,也可以用
pip3 install --user shadowsocks

安装完毕,配置本地 client 端,创建文件 ssclient.json(名字可以自选,不一定要这个),写入内容

1
2
3
4
5
6
7
8
9
10
11
{
"server":"xxx.xxx.xxx.xxx",
"server_port":8989,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"xxxx",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false,
"workers": 1
}

端口信息根据实际情况修改,完毕后运行 sslocal -c /path/to/ssclient.json,报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
jack@DESKTOP-9TGTFK1:~/ss$ sslocal  -c ssclient.json
INFO: loading config from shadowsocks.json
2019-12-02 21:02:09 INFO loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
File "/usr/local/bin/sslocal", line 11, in <module>
load_entry_point('shadowsocks==2.8.2', 'console_scripts', 'sslocal')()
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/local.py", line 39, in main
config = shell.get_config(True)
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/shell.py", line 262, in get_config
check_config(config, is_local)
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/shell.py", line 124, in check_config
encrypt.try_cipher(config['password'], config['method'])
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/encrypt.py", line 44, in try_cipher
Encryptor(key, method)
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/encrypt.py", line 83, in __init__
random_string(self._method_info[1]))
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/encrypt.py", line 109, in get_cipher
return m[2](method, key, iv, op)
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/crypto/openssl.py", line 76, in __init__
load_openssl()
File "/usr/local/lib/python3.6/dist-packages/shadowsocks/crypto/openssl.py", line 52, in load_openssl
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
File "/usr/lib/python3.6/ctypes/__init__.py", line 361, in __getattr__
func = self.__getitem__(name)
File "/usr/lib/python3.6/ctypes/__init__.py", line 366, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup
jack@DESKTOP-9TGTFK1:~/ss$

这是因为在openssl 1.1.0中废弃了 EVP_CIPHER_CTX_cleanup() 函数而引入了 EVE_CIPHER_CTX_reset() 函数,具体可以查看官方文档, 修复如下

1
2
3
4
5
6
# 在错误日志中找到 openssl.py 文件路径, 通过 vim 修改
sudo vim /usr/local/lib/python3.6/dist-packages/shadowsocks/crypto/openssl.py
# 替换关键自
:%s/cleanup/reset/
# 保存推出
:x

再运行 sslocal,成功

  • MacOS 升级到 10.15 Catalina 之后就跑不起来了

据说是应为升级之后,一些包比如 openssl, dyid 什么的不兼容了导致的,重新安装一下就行了

1
2
3
4
5
6
brew update && brew upgrade

brew uninstall --ignore-dependencies openssl; brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

# 如果 pip install 不好使了,可以试试重装一下
brew reinstall python

然后在 .zshrc 里面添加配置 export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH

终端 Git 下载加速

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# config your `~/.gitconfig` file
[http]
proxy = socks5://127.0.0.1:1080
sslVerify = false

[https]
proxy = socks5://127.0.0.1:1080

# or you can config it by typing terminal
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080
git config --global http.sslVerify false

# turn off proxy, 开启后 git commit 会受影响
git config --global --unset http.proxy
git config --global --unset https.proxy

慢的话肯定是vps不给力,之前用 Vultr 的时候也是龟速,用了 google cloud, 芜湖,起飞!!!

MacOS 安装 SS 客户端

Git 上有一个客户端,用了下还挺香的 ShadowsocksX-NG。README 上有下载地址,直接下载后,解压将安装文件拖至 Application 文件夹下就行了。

配置注意点:

  1. Servers -> Server Preference 添加自己的 SS 节点
  2. Preferences 里面可以看到 proxy 设置,需要注意的是它为 Socks5 和 HTTP 设置了不同端口,Sock5 是 1086,HTTP 是 1087
  3. 安装了这个应用之后貌似就不需要单独配置终端 proxy 了, 可以通用,或者使用 global mode

作为一个新世纪的社会主义接班人,怎么能不关注国家大事呢,于是我开始有意识的培养看新闻联播的习惯。但是问题来了,新闻联播要三十分钟,而且不能倍速播放。都 9012 年了啊,官网用的还是 flash, 也是醉了。合计了一下,打算使用工具将视频下载下来后本地用 Potplayer 加速播放。一开始找了 IDM,总的来说,用起来还不错,但是有些时候新闻联播官网抓到的 ts 文件,还得自己合并,不开心 (。 ́︿ ̀。)

最后在 Gayhub 上找到了 you-get 很赞 ↖(^ω^)↗ 而且他还支持很多网站的下载 b站,youku 什么的都不在话下,而且有人维护,贡献很积极呦

安装

Win10 OS

准备工作:安装 python 3.2+, FFmpeg。前者用来下载后者用来合并视频,如果 FFmpeg 没有安装的还,下载还能成功,但是合并就不行了。

1
pip install you-get

安装 FFmpeg, 前往官网下载压缩包,解压后将 bin 文件加到系统配置的 path 中,path 选系统 level 的,user level 的可能会出问题,视屏不能合并,别问我为什么知道的 ┑( ̄Д  ̄)┍

使用

1
2
# 显示可用的下载选项,然后根据提示操作就行了
you-get -i [URL]

官方文档写的很详细,不懂就看 you-get 官方文档好了,有中文版

为博客添加 sitemap 并将博客添加至搜索引擎

Google Search Console

到博客根目录下运行 command 安装插件

1
npm install hexo-generator-sitemap --save

在根目录下的 _config.yml 中添加 sitemap 配置

1
2
3
# Config sitemap to enable SEO
sitemap:
path: sitemap.xml

重新生成文件,启动 server

1
2
hexo g
hexo s

访问 url/sitemap.xml 可以看到新生成的 sitemap xml 文件

访问 Google Search Console 注册你的页面。
如果你的博客挂在 github 上,选右边的那个,输入你的 github 博客地址,比如我的是 https://jack-zheng.github.io/hexo
资源类型

结下来是验证所有权, 选择 HTML 标记会简单一点。点击他,你会得到一串码。复制它然后到 themes/next/_config.yml 中,找到 google_site_verification: 将值写在后面

所有权验证

添加完后,将你的博客部署,在次访问是查看页面源码,你会发现头部多了一段 meta 数据

文件头

然后点击 Verify 按钮,验证成功

所有权验证

点击 站点地图 在 1 处填写你的 sitemap 地址。添加完成后,他会显示在 2 处

添加站点

等一段时间后,google 就会将你的博客抓去出来了, 通过在搜索框中输入 site:https://jack-zheng.github.io/ 可以看到结果,我是在第二天看的,不是很清楚精确需要等多久

Google Search 结果

博客添加图片引用

由于我的博客是挂载在 subdirectory 下面的,在 source 下面创建 images 的方案不生效,也没有找到对应的解决办法,我还以为可以在 _config.yml 里面配置来着,残念 ┑( ̄Д  ̄)┍

最后采用了 post_asset_folder 的配置,这个配置默认就有的,默认关闭,把他设置成 true 打开,之后每次创建新 post 的时候,会在 _posts 下面新建文件夹,将你要上传的图片放在里面,在 post 正文中使用 ![Google Search 结果](seo05.png) 引用即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# folder structure sample
source
├── _posts
│ ├── git-commands.md
│ ├── hexo-comments.md
│ ├── hexo-search-seo
│ │ ├── seo01.jpg
│ │ ├── ...
│ │ └── seo05.png
│ ├── hexo-search-seo.md
│ ├── ...
│ └── setup-hexo-tag-category.md
├── categories
│ └── index.md
└── tags
└── index.md

本篇将介绍如何设置统计文章阅读量和文章授权。

阅读量统计

Hexo 默认使用’不蒜子’做阅读量统计,而且已经配置好了,如果想要开启它只需要到 next/_config.yml 下将 busuanzi_count: 下的 enable: 设置为 true 即可。重启后访问也看可以看到文章标题下多处一只眼睛标志,旁边就是总阅读量。

不蒜子, 貌似是某程序员建的站,托管在七牛上的,赞!

文章授权

Hexo 默认授权是关闭的,可以在 next/_config.ymlcreative_commons 模块做设置。默认是 by-nc-sa 授权。

常见授权方式Wiki

许可协议 简称
创作共享 署名 CC BY
创作共享 署名-相同方式共享 CC BY-SA
创作共享 署名-非商业性 CC BY-NC
创作共享 署名-禁止演绎 CC BY-ND
创作共享 署名-非商业性-禁止演绎 CC BY-NC-ND
创作共享 署名-非商业性-相同方式共享 CC BY-NC-SA
创作共享 相同方式共享 CC SA
创作共享 非商业性 CC NC
创作共享 禁止演绎 CC ND
创作共享 非商业性-相同方式共享 CC NC-SA
创作共享 非商业性-禁止演绎 CC NC-ND

本篇包含两个配置

  1. 文章字数,阅读时间显示
  2. 语言设置,显示中文

配置字数

参靠 repo: hexo-symbols-count-time

  1. 到根目录下执行 npm install hexo-symbols-count-time 安装插件
  2. 到根目录下的 _config.yml 中添加配置
1
2
3
4
5
6
symbols_count_time:
symbols: true
time: true
total_symbols: true
total_time: true
exclude_codeblock: false

配置中文显示

查看 Next 主题下面的 language 文件夹,找到其中的中文显示文件名,把根目录下的 _config.yml 里的 language 改为这个名字就行了。我这边文件名为 zh-CN.yml,将 yml 中 language 改为 zh-CN

为博客增加评论功能,参考 next 的配置文件,截止 2019-11-18 号为止,next 已经默认支持了 changyan | disqus | disqusjs | gitalk | livere | valine 这些评论系统。这里出于兼容性和可靠性的原则,选择 gitalk 作为评论系统。

Steps:

  1. github 创建一个新的 repo 用于存放 comments,比如叫做 hexo-comments
  2. 去到 github 账号的配置页面新建一个 Oauth 授权,点这里快速跳转
  3. 填写授权信息 Homepage URL 和 Authorization callback URL 都写自己的博客地址就行了
  4. 确认后跳转到授权信息页面,记下他的 app id 和 secret
  5. 配置 next 的 _config.yml 如下
  6. 提交代码测试

测试评论,成功。新添加的评论会出现在 hexo-comments 的 issues tab 下面,按这样的操作的话,我觉的可能都不需要自建创建 comments repo 了,直接放在一个 repo 下面就完事了

1
2
3
4
5
6
7
8
9
10
11
12
gitalk:
enable: true
github_id: jack-zheng # GitHub repo owner
repo: hexo-comments # 新建的用于存放评论的repo
client_id: d44xxxxxxe3a # GitHub Application Client ID
client_secret: 9b3c4xxxxxb708ef # GitHub Application Client Secret
admin_user: jack-zheng # GitHub repo owner and collaborators, only these guys can initialize gitHub issues
distraction_free_mode: true # Facebook-like distraction free mode
# Gitalk's display language depends on user's browser or system environment
# If you want everyone visiting your site to see a uniform language, you can set a force language value
# Available values: en | es-ES | fr | ru | zh-CN | zh-TW
language:

PS: 用这种方案的话,默认只有 github 的用户才能评论,不过看这种文章的应该都是github用户,所以问题不大
PPS: 网上很多文章都会要你去配置 swig 文件,最新版的 next 已经不需要这个步骤了

Reference

默认设置下 Hexo Next 主题是关闭 tagcategories 的,你可以通过一下步骤打开它。

  1. 去到 next folder 下,打开 _config.yml, 去掉 menu 下的 tags 和 categories 的注释。此时刷新页面,主页上会在 Archive 旁边多两个icon.
  2. repo 目录下 run command: hexo new page categories, 并向该文件中添加新行 type: "categories"。新文件目录 path/to/blog/source/categories/index.md
  3. repo 目录下 run command: hexo new page tags, 并向该文件中添加新行 type: "tags"。新文件目录 path/to/blog/source/tags/index.md
1
2
3
4
5
6
# categories index.md
---
title: categories
date: 2019-11-15 16:42:15
type: "categories" <--- 新行
---
1
2
3
4
5
6
# tags index.md
---
title: tags
date: 2019-11-15 16:29:40
type: "tags" <--- 新行
---

顺便还可以去 path/to/blog/scaffolds/post.md,在 post.md 中添加新行 categories:, 这样每次 new post 的时候都会自动带上这个标签了 ♪(´ε` )

Reference

git repo 迁移,附带 history

想要将 git repo 从 public 复制到公司的 enterprise 版本的 git 上,但是想要保留历史记录。

1
2
3
4
5
6
7
8
# 复制 repo
git clone https://gitee.com/oldxxx/oldxxx.git
# 删除原有关联
git remote remove origin
# 关联到新 repo
git remote add origin https://gitee.com/newxxx/newxxx.git
# 推送至新 repo
git push

怎么更新 fork repo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 检查 repo 状态
git remote -v
origin git@github.corp:jack/vault.git (fetch)
origin git@github.corp:jack/vault.git (push)

# 关联到原项目
git remote add upstream git@github.corp:platform-core/vault.git
# 检查 repo 状态
git remote -v
origin git@github.corp:jack/vault.git (fetch)
origin git@github.corp:jack/vault.git (push)
upstream git@github.corp:platform-core/vault.git (fetch)
upstream git@github.corp:platform-core/vault.git (push)

# 将原项目改动 sync 到本地
git fetch upstream
# 更新本地分支
git merge upstream/master
# 推送到本地分支的 remote,打完收工
git push

怎么查看一个月之前的版本信息

最近发现一个 bug 不知道是不是自己的代码改出来的,由于是一些 context 的改动不好查。打算直接一点,使用一个月之前(我的改动还没有进去的节点)的 build 起一个服务测试一下, git 支持类似的查找

1
2
3
4
git log --after="2014-02-12T16:36:00-07:00"
git log --before="2014-02-12T16:36:00-07:00"
git log --since="1 month ago"
git log --since="2 weeks 3 days 2 hours 30 minutes 59 seconds ago"

结合 reverse 使用效果更佳 git log --since="1 month ago" --reverse

怎么添加 commited file 到 .gitignore

StackOverflow: applying-gitignore-to-committed-files

1
git rm --cached path/to/file

怎么把local master branch 还原成和 remote 端一致

StackOverflow: reset-local-repository-branch-to-be-just-like-remote-repository-head

1
2
git fetch origin
git reset --hard origin/master

移除本地的 commit

1
git reset HEAD~1

将 remote 会滚到上个 commit

git revert -m 1 commit_hash 将对应的 commit 改动回滚, 很棒!

PS: -m 1 会使用默认的 comment 信息,如果你想自定义 comment 内容,可以将这个参数去掉

reset VS revert

reset 历史记录后退,revert 前进

reset 会将历史记录也一并会滚,这样就会导致记录缺失。不是很好,但是在自己 local branch 做了改动想还原的这种 scenario 还是和合适的。还有 reset --hard commit_hash + git push --force 也可以重置代码,但是会修改历史记录,操作比较危险

revert 会在原有的基础上将对应的 commit 改动重置并添加新的历史记录,路径更完成

这个 文章 比较两者的区别,写的挺清楚的

将本地的 commit 回退到前一个 commit

1
2
3
git reset HEAD~1 # 保留改动,回退到 index 状态(add 之前)
git reset --soft HEAD~1 # 保留改动到 stage 状态 (add 之后,commit 之前)
git reset --hard HEAD~1 # 同时将改动也去掉

将本地的单个文件还原成 master 版本

1
git checkout origin/master -- /path/to/file

将远端删除的文件找回来

1
2
3
git log -- /path/of/deleted/file # 找到删除 commit 的前一个 commit number

git checkout pre-commit-num -- /path/of/deleted/file

将 git add, commit 合并到一个命令中

StackOverflow: git-add-and-commit-in-one-command

1
2
3
4
5
# config git alias
git config --global alias.add-commit '!git add -A && git commit'

# and use it with
git add-commit -m 'My commit message'

Rename local repo

1
2
3
4
5
git checkout <repo need to re-name>
git branch -m <new name>

# or make sure you are not at renamed repo
git branch -m <old repo name> <new repo name>

移除 merge 内容

1
2
3
4
git reset --hard HEAD

# or
git merge --abort

国内 git clone 有时会卡住, 有没有 debug 的选项

StackOverflow: how-can-i-debug-git-git-shell-related-problems

1
GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master

已创建 repo 添加证书

跳转到项目页面,添加文件 ‘create a new file’ -> 输入 ‘license’ 会给出提示

查看某人的 commit 记录

1
git log --author='jack'

查看 log 反序

1
git log --reverse

对比文件

1
git diff <base-commit> <changed-commit> -- <file-path>

比如我像比较 8ab244e3b2de31ca 相对于 f31762ada1764 有什么改动可以使用

1
2
3
git diff f31762ada1764 8ab244e3b2de31ca -- <file-path>

# 如果是相对于 header 的改动,可以省略第一个 commit 内容

查看被删除文件的历史记录

1
2
3
4
5
6
7
git log -- <file path>

# 或者使用

git log --full-log -- <file path>

# 第二种会包含各种 merge 的信息, 比较全。但是一般第一种就够用了

找到该文件后,可以使用 git blame 9f41d238500 – 查看文件修改记录

查看某个 commit 的改动

git show

查看文件某一行删除记录

1
2
# -G 直接支持正则,-S 需要添加其他参数来支持正则
git log -S/G'key' /path/to/file

已经 check in 的文件夹加入 .gitignore

1
2
3
4
5
# 处理文件夹
git rm -r --cached /folder

# 处理文件
git rm --cached /path/to/file

显示 repo 关联的远端地址

1
git remote show origin

cherry pick 提取某一个 commit 和并到目标分支

情景描述:

我自己有一个分支 A, 同时创建了另一个分支 B 并在上面做了改动,commit 为 c1。我对他的这个 commit 有依赖,又不想自己 CV 代码或者以后有 conflict 什么的,这时可以 checkout 到我自己的分支,然后 git cherry-pick c1 来合并代码。他的代码 merge 之后我也不用解决冲突,美滋滋儿。

PS: 在合并 B 分支上的 commit 的时候我并不需要指定分支名字,是不是从侧面验证了,每个 git commit 都是唯一的,不同分支的 commit 也保证 id 不重复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
^                  ^                                               
| |
| cherry-pick |
|C1 <--------- |C2
| | |
| | |
|C1' ----- |C1
| |
| |
|Branch-A |Branch-B
|------------------|
^
|
|
|
| Master
|
|

cherry pick revert

1
git reset --hard HEAD^

How to drop

如果本地有改动

1
2
3
git stash
git reset --hard HEAD^
git stash pop

如果没有直接 git reset --hard HEAD^, cherry-pick 本质上就是新加了一个 commit 到 branch 而已。

使用 rebase 来合并自己分支的 commit 记录,强迫症福音

check out 一个测试 branch,修改 readme

1
2
3
4
5
6
echo 'a' >> README.md
git add-commit -m 'edit01'
echo 'b' >> README.md
git add-commit -m 'edit01'
echo 'c' >> README.md
git add-commit -m 'edit01'

git log –oneline 查看 commit 记录

1
2
3
4
dc0a087 (HEAD -> testrebase2) edit03
c6feb2a edit02
0436650 edit01
0dcdaac init porject

现在通过 rebase 将 edit01-03 合并为一个 commit。这里有一个地方要注意的是如果指定 commit id,start point 是你想要合并的 ID 的前一个

1
git rebase -i HEAD~3 或者 git rebase -i 0dcdaac

terminal 给出提示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
pick 0436650 edit01
pick c6feb2a edit02
pick dc0a087 edit03

# Rebase 0dcdaac..dc0a087 onto 0dcdaac (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
# d, drop <commit> = remove commit
# l, label <label> = label current HEAD with a name
# t, reset <label> = reset HEAD to a label
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# . create a merge commit using the original merge commit's

将 edit02, 03 的前缀改成 s,然后 :wq 进入下一个界面需改 commit message

1
2
3
pick 0436650 edit01
s c6feb2a edit02
s dc0a087 edit03

提示信息如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# This is a combination of 3 commits.
# This is the 1st commit message:

edit01

# This is the commit message #2:

edit02

# This is the commit message #3:

edit03

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Wed Jul 8 17:10:52 2020 +0800
#
# interactive rebase in progress; onto 0dcdaac
# Last commands done (3 commands done):

带 # 号的行不会显示,只需要修改之前我们自己添加的那些行就行了,这里修改为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
merge commit edit01-03

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date: Wed Jul 8 17:10:52 2020 +0800
#
# interactive rebase in progress; onto 0dcdaac
# Last commands done (3 commands done):
# squash c6feb2a edit02
# squash dc0a087 edit03
# No commands remaining.
# You are currently rebasing branch 'testrebase2' on '0dcdaac'.
#
# Changes to be committed:
# modified: README.md
#

esc + :wq 退出,终端会给出修改成功的提示

1
2
3
4
[detached HEAD 6c42812] merge commit edit01-03
Date: Wed Jul 8 17:10:52 2020 +0800
1 file changed, 3 insertions(+)
Successfully rebased and updated refs/heads/testrebase2.

这是再使用 git log –oneline 查看,可以发现目标 commit 已经合并成功

1
2
6c42812 (HEAD -> testrebase2) merge commit edit01-03
0dcdaac init porject

怎么避免 branch 上出现很多 merge 的 commit, 强迫症福音 2.0

TODO

Git SS 加速

修改 .gitconfig 文件,添加配置如下

1
2
3
4
5
6
7
# config your `~/.gitconfig` file
[http]
proxy = socks5://127.0.0.1:1080
sslVerify = false

[https]
proxy = socks5://127.0.0.1:1080

或者在终端输入

1
2
3
4
5
6
7
8
# or you can config it by typing terminal
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080
git config --global http.sslVerify false

# turn off proxy, 开启后 git commit 会受影响
git config --global --unset http.proxy
git config --global --unset https.proxy

今天决定尝试一下给 blog 换皮肤。就拿时下最流行的 Next 主题好了,用的人多,文档齐全,熟悉了之后有需求再发挥。

安装过程

安装很简单,官方地址 hexo-theme-next

  1. cd hexo
  2. git clone https://github.com/theme-next/hexo-theme-next themes/next
  3. themes/next 目录下把 repo 的 .git, .github 删掉
  4. 起 server 验证,打完收工

其他一些比较个人的配置去 next 目录下的 _config.yml 里面配置,像什么头像啦,github 三角标什么的都要有的。

一些坑

如果你只是将 next clone 下来没有删掉 .git 就 add 的话会有 warning 给出来

1
2
3
4
5
6
7
8
9
10
11
12
13
git add .gitignore _config.yml themes/warning: adding embedded git repository: themes/nexthint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> themes/next
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached themes/next
hint:
hint: See "git help submodule" for more information.

这是应为 git 是不支持嵌套 repo 管理的,你可以通过 submodules 来管理,不过使用上会有点冲突,按 submodules 的定义来说,它是为那些需要使用子模块但是那些模块不需要更新,或者只需要跟着官方的 branch 走就行了。就 hexo 这种情况,你可以自己 fork 一个,然后作为子模块管理,但是这样你 fork 的 repo 就不能跟进官方的 repo 了 ┑( ̄Д  ̄)┍, 反正就我的情况来说,用最简单的删 .git 就行了,真有需求以后在研究。