<?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 LeafCxy's Blog</title><link>https://leafcxy.github.io/tags/github/</link><description>Recent content in Github on LeafCxy's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 18 Aug 2025 02:28:16 +0000</lastBuildDate><atom:link href="https://leafcxy.github.io/tags/github/index.xml" rel="self" type="application/rss+xml"/><item><title>Git的奇技淫巧</title><link>https://leafcxy.github.io/posts/2025-08-18/</link><pubDate>Mon, 18 Aug 2025 02:28:16 +0000</pubDate><guid>https://leafcxy.github.io/posts/2025-08-18/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Git 常用命令集合，Fork 自 &lt;a href="https://github.com/git-tips/tips"&gt;tips&lt;/a&gt; 项目&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Git 是一个分布式版本管理工具，版本管理工具就是大家在写东西的时候都用过 &lt;strong&gt;回撤&lt;/strong&gt;这个功能，但是回撤只能回撤几步，假如想要找回我三天之前的修改，光用回撤是找不回来的。而&lt;strong&gt;版本管理工具能记录每次的修改&lt;/strong&gt;，只要提交到版本仓库，就可以找到之前任何时刻的状态（文本状态）。&lt;/p&gt;
&lt;p&gt;下面的内容就是列举了常用的 Git 命令和一些小技巧，可以通过页面内查找的方式 &lt;code&gt;Ctrl/Command+f&lt;/code&gt; 进行快速查找。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id="开卷必读"&gt;开卷必读&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;如果之前未使用过 Git，可以学习 &lt;a href="https://rogerdudler.github.io/git-guide/index.zh.html"&gt;Git 小白教程&lt;/a&gt;入门&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;一定要先测试命令的效果后&lt;/strong&gt;，再用于工作环境中，以防造成不能弥补的后果！&lt;strong&gt;到时候别拿着砍刀来找我&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;所有的命令都在 &lt;code&gt;git version 2.7.4 (Apple Git-66)&lt;/code&gt; 下测试通过&lt;/li&gt;
&lt;li&gt;统一概念：
&lt;ul&gt;
&lt;li&gt;工作区：改动（增删文件和内容）&lt;/li&gt;
&lt;li&gt;暂存区：输入命令：&lt;code&gt;git add 改动的文件名&lt;/code&gt;，此次改动就放到了 ‘暂存区’&lt;/li&gt;
&lt;li&gt;本地仓库(简称：本地)：输入命令：&lt;code&gt;git commit 此次修改的描述&lt;/code&gt;，此次改动就放到了本地仓库，每个 commit，我叫它为一个版本。&lt;/li&gt;
&lt;li&gt;远程仓库(简称：远程)：输入命令：&lt;code&gt;git push 远程仓库&lt;/code&gt;，此次改动就放到了远程仓库（GitHub 等)&lt;/li&gt;
&lt;li&gt;commit-id：输出命令：&lt;code&gt;git log&lt;/code&gt;，最上面那行 &lt;code&gt;commit xxxxxx&lt;/code&gt;，后面的字符串就是 commit-id&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;如果喜欢这个项目，欢迎 Star、提交 Pr、&lt;a href="https://github.com/521xueweihan/git-tips/issues"&gt;反馈问题&lt;/a&gt;😊&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="展示帮助信息"&gt;展示帮助信息&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git help -g
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The command output as below:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;The common Git guides are:
attributes Defining attributes per path
cli Git command-line interface and conventions
core-tutorial A Git core tutorial for developers
cvs-migration Git for CVS users
diffcore Tweaking diff output
everyday A useful minimum set of commands for Everyday Git
glossary A Git Glossary
hooks Hooks used by Git
ignore Specifies intentionally untracked files to ignore
modules Defining submodule properties
namespaces Git namespaces
repository-layout Git Repository Layout
revisions Specifying revisions and ranges for Git
tutorial A tutorial introduction to Git
tutorial-2 A tutorial introduction to Git: part two
workflows An overview of recommended workflows with Git
&amp;#39;git help -a&amp;#39; and &amp;#39;git help -g&amp;#39; list available subcommands and some concept guides. See &amp;#39;git help &amp;lt;command&amp;gt;&amp;#39; or &amp;#39;git help &amp;lt;concept&amp;gt;&amp;#39; to read about a specific subcommand or concept.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="回到远程仓库的状态"&gt;回到远程仓库的状态&lt;/h2&gt;
&lt;p&gt;抛弃本地所有的修改，回到远程仓库的状态。&lt;/p&gt;</description></item><item><title>github-actions</title><link>https://leafcxy.github.io/posts/2025-07-24-13/</link><pubDate>Thu, 24 Jul 2025 07:44:00 +0000</pubDate><guid>https://leafcxy.github.io/posts/2025-07-24-13/</guid><description>&lt;p&gt;GitHub Actions是GitHub平台提供的一种持续集成和持续部署（CI/CD）工具。它允许开发者在GitHub上自动化执行各种任务，如构建、测试、部署等。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;使用GitHub Actions，您可以创建一个工作流程（Workflow），该工作流程由一个或多个任务（Job）组成，每个任务可以运行在不同的操作系统和环境中。每个任务又由一个或多个步骤（Step）组成，每个步骤可以运行一条或多条命令。&lt;/p&gt;
&lt;p&gt;GitHub Actions提供了丰富的预定义的操作（Actions），可以用于执行各种常见的任务，如构建项目、运行测试、发布到云平台等。您还可以编写自己的自定义操作，以满足特定的需求。&lt;/p&gt;
&lt;p&gt;通过在代码仓库中创建一个名为&lt;code&gt;.github/workflows&lt;/code&gt;的目录，并在该目录中添加一个YAML格式的工作流程文件，您就可以定义和配置您的工作流程。工作流程可以根据事件触发，例如代码的推送、拉取请求的创建等。&lt;/p&gt;
&lt;p&gt;GitHub Actions具有强大的集成能力，可以与其他工具和服务进行无缝集成，如Docker、AWS、Azure等。它还提供了丰富的API和工具，用于监控和调试工作流程的执行。&lt;/p&gt;
&lt;p&gt;总而言之，GitHub Actions是一种强大的自动化工具，可以帮助开发者简化和加速软件开发过程中的各种任务，并提供了灵活的配置和集成选项。&lt;/p&gt;</description></item><item><title>设置代理解决github被墙</title><link>https://leafcxy.github.io/posts/2025-07-22-12/</link><pubDate>Tue, 22 Jul 2025 08:42:22 +0000</pubDate><guid>https://leafcxy.github.io/posts/2025-07-22-12/</guid><description>&lt;p&gt;虽然有梯子，可以正常访问github页面，但是在发现“git clone”命令速度特别慢，有时还经常卡掉。可以通过设置git 代理，解决被墙问题。&lt;/p&gt;
&lt;p&gt;git 有几种传输协议，在Github上主要用到的是Https和SSH协议。所以我们要做的是对git 命令的https 以及ssh流量做代理。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id="设置https-代理"&gt;设置https 代理&lt;/h2&gt;
&lt;p&gt;Git代理有两种设置方式，分别是全局代理和只对Github代理，建议只对github 代理。代理协议也有两种，分别是使用http代理和使用socks5代理，建议使用socks5代理。注意下面代码的端口号需要根据你自己的代理端口设定，比如我的代理socks端口是51837。&lt;/p&gt;
&lt;h3 id="全局设置不推荐"&gt;全局设置（不推荐）&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#使用http代理 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.proxy http://127.0.0.1:58591
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global https.proxy https://127.0.0.1:58591
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#使用socks5代理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.proxy socks5://127.0.0.1:51837
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global https.proxy socks5://127.0.0.1:51837
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="只对github代理推荐"&gt;只对Github代理（推荐）&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#使用socks5代理（推荐）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.https://github.com.proxy socks5://127.0.0.1:51837
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#使用http代理（不推荐）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global http.https://github.com.proxy http://127.0.0.1:58591
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="取消代理"&gt;取消代理&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config --global --unset http.proxy git config --global --unset https.proxy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="设置ssh代理终极解决方案"&gt;设置ssh代理（终极解决方案）&lt;/h3&gt;
&lt;p&gt;https代理存在一个局限，那就是没有办法做身份验证，每次拉取私库或者推送代码时，都需要输入github的账号和密码，非常痛苦。
设置ssh代理前，请确保你已经设置ssh key。可以参考在 github 上添加 SSH key 完成设置
更进一步是设置ssh代理。只需要配置一个config就可以了。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Linux、MacOS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;vi ~/.ssh/config
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Windows &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;到C:&lt;span style="color:#ae81ff"&gt;\U&lt;/span&gt;sers&lt;span style="color:#ae81ff"&gt;\y&lt;/span&gt;our_user_name&lt;span style="color:#ae81ff"&gt;\.&lt;/span&gt;ssh目录下，新建一个config文件（无后缀名）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将下面内容加到config文件中即可&lt;/p&gt;
&lt;p&gt;对于windows用户，代理会用到connect.exe，你如果安装了Git都会自带connect.exe，如我的路径为C:\APP\Git\mingw64\bin\connect&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#Windows用户，注意替换你的端口号和connect.exe的路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ProxyCommand &lt;span style="color:#e6db74"&gt;&amp;#34;C:\APP\Git\mingw64\bin\connect&amp;#34;&lt;/span&gt; -S 127.0.0.1:51837 -a none %h %p
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#MacOS用户用下方这条命令，注意替换你的端口号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#ProxyCommand nc -v -x 127.0.0.1:51837 %h %p&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Host github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; User git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Port &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Hostname github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 注意修改路径为你的路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; IdentityFile &lt;span style="color:#e6db74"&gt;&amp;#34;C:\Users\Your_User_Name\.ssh\id_rsa&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; TCPKeepAlive yes
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Host ssh.github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; User git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Port &lt;span style="color:#ae81ff"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Hostname ssh.github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 注意修改路径为你的路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; IdentityFile &lt;span style="color:#e6db74"&gt;&amp;#34;C:\Users\Your_User_Name\.ssh\id_rsa&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; TCPKeepAlive yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;保存后文件后测试方法如下，返回successful之类的就成功了。&lt;/p&gt;</description></item><item><title>git无法签出代码</title><link>https://leafcxy.github.io/posts/2025-07-21/</link><pubDate>Mon, 21 Jul 2025 06:16:50 +0000</pubDate><guid>https://leafcxy.github.io/posts/2025-07-21/</guid><description>&lt;p&gt;Q: 在Windows10上使用git clone代码的时候抛出了异常，重试了几次都是相同的错误：下载的目录里除了.git没有任何东西。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;A: 源代码是在linux上编写的，但是在Windows10上拉取代码却出现了问题。根据提示可以看出代码clone是成功的，但是checkout的时候出现了错误。那么问题很可能是不通系统下文件属性或策略导致的。&lt;/p&gt;
&lt;p&gt;然后在Git文档上找到一个关于NTFS保护机制的配置，core.protectNTFS：&lt;/p&gt;
&lt;p&gt;If set to true, do not allow checkout of paths that would cause problems with the NTFS filesystem, e.g. conflict with 8.3 “short” names. Defaults to true on Windows, and false elsewhere.&lt;/p&gt;
&lt;p&gt;Windows系统下默认值是true，也就是说不符合NTFS策略的文件不会被签出，设置为false后可以关闭保护机制。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git config core.protectNTFS false
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>