<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Github on Duke Hsu ｜ Learn • Build • Share</title><link>https://www.dukehsu.com/tags/github.html</link><description>Recent content in Github on Duke Hsu ｜ Learn • Build • Share</description><image><title>Duke Hsu ｜ Learn • Build • Share</title><url>https://www.dukehsu.com/images/og-default.jpg</url><link>https://www.dukehsu.com/images/og-default.jpg</link></image><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sat, 31 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.dukehsu.com/tags/github/index.xml" rel="self" type="application/rss+xml"/><item><title>Deploy MkDocs to GitHub Pages (github.io)</title><link>https://www.dukehsu.com/posts/deploy-mkdocs-to-github-pages-github-io.html</link><pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/deploy-mkdocs-to-github-pages-github-io.html</guid><description>&lt;h2 id="1-setup-mkdocs-environment"&gt;1) Setup MkDocs environment&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create MkDocs virtual environment&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python3 -m venv mkdoc_venv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Activate venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;source&lt;/span&gt; mkdoc_venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deactivate venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;deactivate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Install MkDocs + Material theme&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip3 install mkdocs mkdocs-material
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Install Mermaid plugin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install mkdocs-mermaid2-plugin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Create a new MkDocs project&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs new duke-note
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run MkDocs local server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs serve
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run server for external access&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs serve --dev-addr&lt;span class="o"&gt;=&lt;/span&gt;0.0.0.0:8000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-create-github-repository"&gt;2) Create GitHub repository&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run in your notes directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;Initial commit of my study notes&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3connect-to-remote-github-repo"&gt;3)Connect to remote GitHub repo&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Format:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# git remote set-url origin https://&amp;lt;token&amp;gt;@github.com/&amp;lt;owner&amp;gt;/&amp;lt;repository&amp;gt;.git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Example:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote set-url origin https://ghp_yourTokenHere@github.com/dukehug/mkdocs_dknotes.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git branch -M main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push -u origin main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deploy to GitHub Pages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs gh-deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4deploy-script-deploysh"&gt;4)Deploy script (deploy.sh)&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Stop if any error happens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;set&lt;/span&gt; -e
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Build site&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs build
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sleep &lt;span class="m"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Push updates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;update notes: &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;date&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push origin main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sleep &lt;span class="m"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Deploy to GitHub Pages&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdocs gh-deploy&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="5math-formula-support-mathjax"&gt;5)Math formula support (MathJax)&lt;/h2&gt;
&lt;p&gt;References:&lt;/p&gt;</description></item><item><title>Git and Github 筆記</title><link>https://www.dukehsu.com/posts/git_and_github_note.html</link><pubDate>Sun, 28 Sep 2025 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/git_and_github_note.html</guid><description>&lt;h2 id="git-and-github-筆記"&gt;Git and Github 筆記&lt;/h2&gt;
&lt;h3 id="git-fast-version-control"&gt;Git fast version control&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;一些基本概念&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;版本管理和跟蹤&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;版本控制系統是軟件工具&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可以幫助團隊管理源代碼&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="status-of-version-版本狀態"&gt;Status of Version 版本狀態&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Untracked 未追蹤&lt;/li&gt;
&lt;li&gt;Tracked 已追蹤&lt;/li&gt;
&lt;li&gt;Staged 已暫存&lt;/li&gt;
&lt;li&gt;Committed 已提交&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="head---master--branch"&gt;HEAD -&amp;gt; master / branch&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;HEAD ： 目前進度，最新狀態&lt;/li&gt;
&lt;li&gt;Master : 主線&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="git-追蹤的是檔案的變化不是檔案本身"&gt;git 追蹤的是檔案的變化，不是檔案本身&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;刪除檔案也需要&amp;quot;add&amp;quot; 和 &amp;ldquo;commit&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="需要忽略的版本管理的文件"&gt;需要忽略的版本管理的文件&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;在projec 目錄下 新增 &lt;code&gt;.gitignore&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在&lt;code&gt;.gitignore&lt;/code&gt; 文件中寫入不需要進行版本管理控制的文件後綴或者文件名&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="github-是平台--相當於server"&gt;Github 是平台 / 相當於Server&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Git 工具將文檔或者代碼 託管到github 平台 -&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="install-安裝"&gt;Install 安裝&lt;/h3&gt;
&lt;h4 id="mac-os"&gt;Mac os&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Mac OS 自帶 git 輸入 &lt;code&gt;git -- version&lt;/code&gt; 就可以看到git 版本&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="windows"&gt;Windows&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;下載最新的 &lt;a href="https://git-for-windows.github.io/"&gt;https://git-for-windows.github.io/&lt;/a&gt; git for windows&lt;/li&gt;
&lt;li&gt;根據指示完成git 的安裝&lt;/li&gt;
&lt;li&gt;完成安裝之後就可以看到git bash 的圖標&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="ubuntu-debian"&gt;Ubuntu /Debian&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;根據下方命令進行安裝&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt-get install git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git --version&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="use-使用"&gt;Use 使用&lt;/h3&gt;
&lt;h4 id="基礎配置"&gt;基礎配置&lt;/h4&gt;
&lt;p&gt;使用以下命令配置git 用戶名和電子郵件&lt;/p&gt;</description></item><item><title>Github上那些V2ray客户端们</title><link>https://www.dukehsu.com/posts/goodguys.html</link><pubDate>Mon, 30 Aug 2021 00:00:00 +0000</pubDate><guid>https://www.dukehsu.com/posts/goodguys.html</guid><description>&lt;h5 id="v2raynwindows"&gt;v2rayN（Windows）&lt;/h5&gt;
&lt;p&gt;Github&lt;br&gt;
&lt;a href="https://github.com/2dust/v2rayN/releases"&gt;https://github.com/2dust/v2rayN/releases&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="v2rayumac"&gt;V2rayU（Mac）&lt;/h5&gt;
&lt;p&gt;Github&lt;br&gt;
&lt;a href="https://github.com/yanue/V2rayU/releases"&gt;https://github.com/yanue/V2rayU/releases&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="v2rayngandroid"&gt;v2rayNG（Android）&lt;/h5&gt;
&lt;p&gt;Github&lt;br&gt;
&lt;a href="https://github.com/2dust/v2rayNG/releases"&gt;https://github.com/2dust/v2rayNG/releases&lt;/a&gt;&lt;br&gt;
Google Play&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.v2ray.ang"&gt;https://play.google.com/store/apps/details?id=com.v2ray.ang&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="kitsunebiandroid"&gt;Kitsunebi（Android）&lt;/h5&gt;
&lt;p&gt;Github&lt;br&gt;
&lt;a href="https://github.com/eycorsican/kitsunebi-android/releases"&gt;https://github.com/eycorsican/kitsunebi-android/releases&lt;/a&gt;&lt;br&gt;
Google Play&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=fun.kitsunebi.kitsunebi4android"&gt;https://play.google.com/store/apps/details?id=fun.kitsunebi.kitsunebi4android&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="bifrostvandroid"&gt;BifrostV（Android）&lt;/h5&gt;
&lt;p&gt;Google Play&lt;br&gt;
&lt;a href="https://play.google.com/store/apps/details?id=com.github.dawndiy.bifrostv"&gt;https://play.google.com/store/apps/details?id=com.github.dawndiy.bifrostv&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="kitsunebiios"&gt;Kitsunebi（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/kitsunebi-proxy-utility/id1446584073?mt=8"&gt;https://itunes.apple.com/us/app/kitsunebi-proxy-utility/id1446584073?mt=8&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="i2rayios"&gt;i2Ray（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/i2ray/id1445270056?mt=8"&gt;https://itunes.apple.com/us/app/i2ray/id1445270056?mt=8&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="shadowrocketios"&gt;Shadowrocket（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8"&gt;https://itunes.apple.com/us/app/shadowrocket/id932747118?mt=8&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="pepiios"&gt;Pepi（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/pepi/id1283082051?mt=8"&gt;https://itunes.apple.com/us/app/pepi/id1283082051?mt=8&lt;/a&gt;&lt;/p&gt;
&lt;h5 id="quantumultios"&gt;Quantumult（iOS）&lt;/h5&gt;
&lt;p&gt;App store&lt;br&gt;
&lt;a href="https://itunes.apple.com/us/app/quantumult/id1252015438?mt=8"&gt;https://itunes.apple.com/us/app/quantumult/id1252015438?mt=8&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>