Git和Github踩坑记

2023年10月26日 · 1482 字 · 3 分钟 · Github Git

Git

git提交或克隆报错fatal: unable to access

解决方式见git提交或克隆报错fatal: unable to access_HZC8的博客-CSDN博客_unable to access git

问题

git在拉取或者提交项目时,中间会有git的http和https代理,但是我们本地环境本身就有SSL协议了,所以取消git的https代理即可,不行再取消http的代理。

解决办法

在项目文件夹的命令行窗口执行下面代码,取消git本身的https代理,使用自己本机的代理。

git config --global --unset http.proxy//取消http代理
git config --global --unset https.proxy//取消https代理 

{% btn ‘https://img.shields.io/badge/2023%2F01%2F10-%E6%96%B0%E5%A2%9E-blue',2023/01/10 新增,,blue %}如果还是不行,可以把网络的DNS配置改为 114.114.114.114 即可正常访问。

git提交报错OpenSSL SSL_read: Connection was reset, errno 10054

问题

开了VPN老是报各种离谱错误。

解决方法

git config --global http.sslVerify false  #修改设置,解除ssl验证

Failed to connect to github.com port 443 after 2289 ms: Connection refused

问题

如题,在终端执行git clone时提示Failed to connect to github.com port 443:Connection regused错误

img

解决方案

本地有连接vpn,通过在终端输入以下命令解决:

git config --global http.proxy http://127.0.0.1:7897

说明:7897为本地混合配置的端口号

.gitignore不生效

原因

原因是 .gitignore 只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

简单来说就是,你新添加的忽略项已经被git追踪了。

解决方案

那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

参考资料

fatal: unable to access ‘xxx.git/’: Recv failure: Connection was reset

解决方案

不知道原因,但是更新一下origin就好了。

 git remote set-url origin https://github.com/xxx/xxxx.git

参考资料

pre-commit/hook: No such file or directory

问题

如题,执行git push时出现这个问题

.git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file or directory

原因是当你试图git commit的时候,pre-commit hook最先执行,主要是用来做certain checks, tests,conditions

解决方案

  • 方案一

删除.git/hooks文件夹里的pre-commit文件。如果还是不行可以尝试方案二。

  • 方案二

git commit的时候加上 --no-verify

Github

Github Actions No such file or directory

问题

我确定生成了这个文件或文件夹,但是却报找不到文件或文件夹的错误。如下图所示:

Github Actions No such file or directory

我的workflow如下:

name: Build and Deploy
on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    if: ${{ contains(github.event.head_commit.message, 'deploy:') }}
    steps:
      - name: Checkout 🛎️
        uses: actions/checkout@v3

      - name: Set env
        run: |
          echo "name=$(echo '${{ github.event.head_commit.message }}' | cut -d ':' -f 2)" >> $GITHUB_ENV
          echo "time=$(date +"%Y-%m-%d")" >> $GITHUB_ENV          
      - name: 安装 Node
        uses: actions/setup-node@v3
        with:
          node-version: "16.15.1" # replace with your node version

      - name: cache
        uses: actions/cache@v3
        id: cache
        with:
          path: node_modules
          key: ${{runner.OS}}-${{hashFiles('**/*-lock.json')}}

      - name: Install Dependency
        if: steps.cache.outputs.cache-hit != 'true'
        run: |
          npm install
          sudo apt-get install ghostscript libgs-dev          
      - name: Build and Export Slides
        run: |
          echo "${{ env.name }}.md"
          npm run build -- ./slides/${{ env.name }}.md --base /slidev_template/${{ env.name }}/
          npm run export -- ./slides/${{ env.name }}.md
                file_pattern: "*.md ./exports/*.pdf"          

      - name: Checkout for changes 🛎️
        uses: actions/checkout@v3
        
      - name: Compression pdf
        run: |
          chmod +x shrinkpdf.sh
          ./shrinkpdf.sh ${{ env.name }}-export.pdf > ./exports/${{ env.name }}.pdf          
      - name: Deploy 🚀
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          branch: gh-pages # The branch the action should deploy to.
          folder: slides/dist # The folder the action should deploy.
          target-folder: ${{ env.name }}
          clean: false

      - name: Update README
        run: |
          echo "|${{ env.name }}|${{ env.time }}|[https://lizilong1993.github.io/slidev_template/${{ env.name }}](https://lizilong1993.github.io/slidev_template/${{ env.name }}/)|[https://cdn.jsdelivr.net/gh/lizilong1993/slidev_template@main/exports/${{ env.name }}.pdf](https://cdn.jsdelivr.net/gh/lizilong1993/slidev_template@main/exports/${{ env.name }}.pdf)|" >> README.md 
          echo "|${{ env.name }}|${{ env.time }}|[https://lizilong1993.github.io/slidev_template/${{ env.name }}](https://lizilong1993.github.io/slidev_template/${{ env.name }}/)|[https://cdn.jsdelivr.net/gh/lizilong1993/slidev_template@main/exports/${{ env.name }}.pdf](https://cdn.jsdelivr.net/gh/lizilong1993/slidev_template@main/exports/${{ env.name }}.pdf)|" >>  README.CN.md          
      - name: Commit changes
        uses: stefanzweifel/git-auto-commit-action@v4
        with:
          commit_message: Automated Change
          branch: main
          commit_options: "--no-verify --signoff"

解决方案

因为我错误的在执行这一步之前Check Out了。

我这里是copy别人的代码没仔细审查,导致我工作流开始Check Out后后面中途又一次Check out了。。。

- name: Checkout for changes 🛎️
  uses: actions/checkout@v3
        
- name: Compression pdf
  run: |
    chmod +x shrinkpdf.sh
    ./shrinkpdf.sh ${{ env.name }}-export.pdf > ./exports/${{ env.name }}.pdf    

可以移除Check Out,影响不大;也可以把Check Out移动到最后面。

Github Actions Permission denied

执行shrinkpdf.sh提示拒绝访问。

原因

权限不够

解决方案

chmod +x   shrinkpdf.sh
sudo ./shrinkpdf.sh in.pdf > out.pdf

kex_exchange_identification: Connection closed by remote host

未解决,怀疑是Clash导致的,但是网上的解决方案都不行,只能放弃SSH改回HTTPS连接Github了。。。