前言
最近把主题换成了hexo-butterfly,顺便把之前的文章迁移过来了。
打算对这个主题做一些优化。
但是优化后又要提交到git上,以便从其他电脑进行管理。
然后如果hexo-butterfly的主题更新,我又要升级的话该怎么办。
搜了下,发现git remote这个命令可以解决我的问题。

拉取最新的主题代码

我这里在github上面建了个仓库,模拟了下主题的更新。仓库地址

  1. 进入自己的hexo代码文件夹
  2. 执行git clone -b main git@github.com:oytoyt/theme-online.git themes/test模拟拉取最新的主题代码
  3. 进入到themes/test文件夹,执行git remote -v查看远程仓库地址。
1
2
3
❯ git remote -v
origin git@github.com:oytoyt/theme-online.git (fetch)
origin git@github.com:oytoyt/theme-online.git (push)

修改远程仓库地址

  1. 将原来的仓库地址改为upstream,执行git remote rename origin upstream
  2. 提前建一个空的仓库用来存放自己修改后的主题代码,我这里用的是git@github.com:oytoyt/thtme-my.git
  3. 将自己的仓库地址设置为origin,执行git remote add origin git@github.com:oytoyt/thtme-my.git
1
2
3
4
5
6
7
8
9
10
❯ git remote rename origin upstream
❯ git remote -v
upstream git@github.com:oytoyt/theme-online.git (fetch)
upstream git@github.com:oytoyt/theme-online.git (push)
❯ git remote add origin git@github.com:oytoyt/thtme-my.git
❯ git remote -v
origin git@github.com:oytoyt/thtme-my.git (fetch)
origin git@github.com:oytoyt/thtme-my.git (push)
upstream git@github.com:oytoyt/theme-online.git (fetch)
upstream git@github.com:oytoyt/theme-online.git (push)

对代码进行修改

我这里将themes/test/README.md文件中的内容进行了如下修改

1
2
3
version: 1.0-my

这是我的主题

原来是

1
version: 1.0

提交修改

1
2
3
4
5
6
7
8
9
10
11
12
13
❯ git add .
❯ git commit -m 'feat: 改成自己的'
[main dac2c31] feat: 改成自己的
1 file changed, 3 insertions(+), 1 deletion(-)
❯ git push origin
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (8/8), 682 bytes | 682.00 KiB/s, done.
Total 8 (delta 0), reused 5 (delta 0), pack-reused 0
To github.com:oytoyt/thtme-my.git
* [new branch] main -> main

拉取最新的主题代码

前置条件:我已经对theme-online仓库进行了下面更新

1
version: 2.0
  1. 执行git fetch upstream main拉取最新的主题代码
  2. 执行git merge upstream/main合并最新的主题代码
1
2
3
4
5
6
7
8
9
10
11
12
❯ git fetch upstream main
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (3/3), 224 bytes | 44.00 KiB/s, done.
From github.com:oytoyt/theme-online
* branch main -> FETCH_HEAD
4fe165d..415d7b6 main -> upstream/main
❯ git merge upstream/main
Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

冲突代码

1
2
3
4
5
6
7
<<<<<<< HEAD
version: 1.0-my

这是我的主题
=======
version: 2.0
>>>>>>> upstream/main
  1. 如果出现冲突,解决冲突后,推送到自己的代码仓库
1
2
3
4
5
6
7
8
9
10
11
12
❯ git add .
❯ git commit -m 'fix: merge'
[main e90157e] fix: merge
❯ git push origin
Enumerating objects: 10, done.
Counting objects: 100% (10/10), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 514 bytes | 514.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:oytoyt/thtme-my.git
dac2c31..e90157e main -> main

总结

这样就是利用git remote去管理自己的主题代码,并且可以随时拉取最新的官方主题进行更新。

1
2
3
4
5
6
7
8
9
10
### 拉取最新代码
git fetch upstream main

### 合并最新代码
git merge upstream/main

### 解决冲突

### 推送到自己的主题仓库
git push origin