git基础知识
git相关命令
先推一个网址:https://learngitbranching.js.org
第一章 明确状态及概念
git库所在的文件夹中的文件大致有4种状态
Untracked:
未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
Unmodify:
文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改,而变为Modified. 如果使用git ``rm``移出版本库, 则成为Untracked文件
Modified:
文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged:
暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态.
说明:
执行git reset HEAD filename取消暂存, 文件状态为Modified
Git 状态 untracked 和 not staged的区别
1)untrack 表示是新文件,没有被add过,是为跟踪的意思。
2)not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思
iedea注册码:
http://idea.lanyus.com/注册码
gitk:可视化查看提交日志命令
第二章 命令
linux安装git
#直接安装git,或者使用yum install git
sudo apt-get install git
#增加个用户git专门做git相关操作
sudo adduser git
#收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
#先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
git init --bare sample.git
chown -R git:git sample.git
git clone git@server:/srv/sample.git
#可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x :1001:1001:,,,:/home/git:/bin/bash
改为(上下两行中均无空格,:x:会被误解所以用空格隔开了):
git:x :1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户
指定的git-shell每次一登录就自动退出。
* 要方便管理公钥,用[Gitosis](https://github.com/sitaramc/gitolite);
* 要像SVN那样变态地控制权限,用[Gitolite](https://github.com/sitaramc/gitolite)。
git本地工作
》》》初始化和日志
#初始化本地仓库
git init
#增加一个文件到暂存区
git add readme.txt
#把当前目录统统增加到暂存区
git add .
#强制添加到GIT,跳过忽略文件的配置
git add -f readme.txt
#移动/重命名一个文件
git mv readme.txt readme.txt1
#工作区中删除readme.txt,还需要git commit才能到暂存区
git rm readme.txt
#cached为软删除,即不物理删除;不加该参数就物理删除,
#提交的时候会提交一个deleted
git rm --cached test.txt
#查看本地库最新状态
git status
#查看两个文件版本的不同
git diff readme.txt
#查看master两个分支的不同,(如指定文件参数则对比两个分支的指定文件readme.txt)
git diff master..dev readme.txt
git diff HEAD -- readme.txt
#提交到本地库/分支并增加注释
git commit -m 'test'
#救一下commit的注释
git commit --amend -m "修改的内容"
#查看最新提交日志
git log --pretty=oneline
#把日志显示为一行,显示每条日志的分支信息,显示全部信息,
#显示作者为wyz的提交,显示前5行记录,显示包含注释串readme的提交,
git log --oneline --decorate --all --author='wyz' -5 --grep='readme'
#显示20200303之前的提交,显示3天前的提交,显示图形效果
git log --before='2020-03-03' --before='3 days' --graph
#命令可以看到分支合并图
git log --graph --pretty=oneline --abbrev-commit
#用来记录你的每一次命令
git reflog
#恢复指定(提交ID)的提交,即撤销该次提交
git revert 提交ID
#HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^
#head指向master,master指向最新提交
#回退到上个版本,三个选项:
#hard(恢复工作区和暂存区),mixed(只影响暂存区),soft(不影响工作区和暂存区)
git reset --hard HEAD^
#控制指针位置,回退到指定版本commit_id,如1094a
git reset --hard 1094a
#丢弃工作区的修改,让这个文件回到最近一次git commit或git add时的状态
#类似git reset HEAD <file>,但是reset是把暂存区的修改撤销
git checkout -- readme.txt
#恢复到最近一次提交前的状态
git checkout HEAD^ -- readme.txt
#创建分支-b参数表示创建并切换git branch dev+git checkout dev
git checkout -b dev
#创建远程origin的dev分支到本地的dev分支,前提是远程必须要有dev分支
git checkout -b dev origin/dev
#git恢复指定文件到某版本
git checkout hashcode filename
#强制创建新的分支,不管是否有重名分支
git checkout -B dev origin/del
#基于某次提交来创建新的分支,如commit的id为352c***
git branch dev 352c
#同上,也是基于某个提交来创建新的分支
git checkout -b dev 352c
#切换到分支的游离状态,默认以该分支下的最后一次提交ID
git checkout --datch dev
#基于当前分支创建一个干净的没有提交日志的分支,基础版本就是当前分支
git checkout --orphan dev
#把当前分支的修改内容一起打包带到新分支上,并使用软合并。俩问题:易冲突且当前分支修改内容丢失
git checkout --merge dev
#比较两个分支的差异内容
git checkout -p dev
#切换分支为master
git checkout master
》》》分支
#把dev分支的内容合并到当前分支上
git merge dev
#查看当前所有分支,当前分支前标一个*号,--list,-a显示所有分支
git branch -a
#查看本地和远程的关联分支信息,cat .git/config也可以看
git branch -vv
#查看remote 分支
git branch -r
#更新远程分支列表
git remote update origin -p
git remote prune 移除这个分支
#删除分支
git branch -d dev
#重命名dev分支为dev,
git branch -m dev dev1
#强制删除分支
git branch -D feature-vulcan
#合并分支时有冲突要手动解决掉然后再add和commit一次
#准备合并dev分支,--no-ff参数,表示禁用Fast forward,加上-m参数,把commit描述写进去
git merge --no-ff -m "merge with no-ff" dev
》》》本地储藏状态:
#把当前工作现场“储藏”起来,等以后恢复现场后继续工作
#先执行stash,然后切换到要改bug的分支,创建分支、add、commit、合并分支、删除分支
#再切回到当前开发分支,即执行stash命令的分支上
git stash
#查看当前分支所有储藏起来的现场
git stash list
#显示
git stash show -p
#恢复的同时stash内容并不删除,需用git stash drop再来删除,
#如果list中有多个,则可以指定恢复stash@{0}
git stash apply stash@{0}
#删除stash@{0}现场
git stash drop stash@{0}
#恢复的同时把stash内容stash@{0}也删了:
git stash pop stash@{0}
》》》多个commit合并提交
#合并多个commit提交,先找到要开始合并的commit的id
git log --oneline
#重设基线到前两个提交,
git rebase -i d8b3f48
#或者合并前两个提交`git rebase -i HEAD~[NUMBER OF COMMITS]`
#参数i表示interactive的方式
git rebase -i HEAD~2
#--amend只能修复最后commit的log message。
git commit --amend
#然后正常push即可
git push
#删除远程分支
git push origin --delete [branch_name]
#如果中途出现问题,使用**git rebase --abort**恢复成未合并之前的状态
git rebase --abort
#把所有提交合并为一个提交(待验证)
git rebase -i --root
#如果已经push到远端了,则需要使用命令**git push origin '分支名' -f**
#强制推送到远端,如果存在冲突则需要解决冲突
git push origin '分支名' -f
git远程交互
#查看远程详细信息
git remote -v
#显示远程分支和本地分支的信息,以及映射关系
git remote show origin
#移除远端分支
git remote rm origin
#给远程增加一个分支
git remote add origin git@github.com:michaelliao/learngit.git
#该选项可以合并两个独立启动仓库的历史,解决本地仓库和远程仓库实际上是
#独立的两个仓库导致报错fatal: refusing to merge unrelated histories的问题
git pull origin master --allow-unrelated-histories
#把本地master分支推送到远程origin分支上,-u参数不但推送分支到远程且把本地和远程分支关联起来
#首次推送加-u 以后就不用加了,-u等价于--set-upstream
git push -u origin master
#把当前分支提交到远程仓库的orgin的dev分支上
git push --set-upstream origin dev
#把本地的master分支推送到远程的origin分支上
git push origin master
#强制推送本地到远程,覆盖掉远程,慎重使用
git push origin master -f
#从远程克隆一个本地库到git_local
git clone git@github.com:michaelliao/gitskills.git git_local
# clone时如果发现:git clone error fatal: working tree ‘/data‘ already exists.
# 则要clone前先执行:unset GIT_WORK_TREE,再clone
unset GIT_WORK_TREE
#depth用于指定克隆深度,为1即表示只克隆最近一次commit
#适合你只是想clone最新版本来使用或学习,而不是参与整个项目的开发工作**
git clone --depth=1 https://gitee.com/dl88250/solo.git
#从远程强制抓取一个本地库
git fetch git@github.com:michaelliao/gitskills.git
#获取远程仓库的最新代码,但是不做任何操作
git fetch --all
#根据提示设置dev和origin/dev的链接
#指定本地dev分支与远程origin/dev分支的链接,
git branch --set-upstream-to=origin/dev dev
#指定链接的另一种方式
git branch --set-upstream-to dev origin/dev。
#把本地的dev分支和远程的dev分支进行关联
git branch --set-upstream dev origin/dev
#抓取最新的远程库修改到本地库的当前分支,必须指定当前分支和远程分支的关联,
#根据提示如果没有指定链接就需要执行--set-upstream-to来设置dev和origin/dev的链接
git pull
#变基,重设基线
#rebase操作可以把本地未push的分叉提交历史整理成直线
#使得我们在查看历史提交的变化时更容易
git rebase
》》》强更
#强制更新本地分支
git fetch --all
#转换为master分支
git checkout master;
#重设基线
git reset --hard origin/master
git reset --hard dev;
#重新拉一下代码
git push --force origin master
git标签
#标签默认是打到最新的提交上的
#可以查看所有标签,标签不是按时间顺序列出,而是按字母排序的。
git tag
#给当前分支打个标签,默认为HEAD
git tag v1.0
#给某次commit id(如f52c633)打个标签
git tag v0.9 f52c633
#查看某个标签的详细信息
git show v0.9
#-a指定标签名,-m指定说明文字,默认不用出现这俩参数
git tag -a v0.1 -m "version 0.1 released" 1094adb
#删除标签,如果要删除远程标签则先删除本地的再提交push到远程
git tag -d v0.9
#只推送删除了的v0.9标签
git push origin :refs/tags/v0.9
#推送标签到远程
git push origin v1.0
#一次性推送所有标签
git push origin --tags
git忽略和全局
创建一个特殊的.gitignore文件,添加内容:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build
#检查.gitignore写得是否有问题
git check-ignore
#检查App.class的配置规则是哪个且有啥问题
git check-ignore -v App.class
#设定全局变量别名
git config --global alias.st status以后st就表示status:git st = git status
#设定全局命令别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset
-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
每个仓库的Git配置文件都放在.git/config文件中
当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
#Git会适当地显示不同的颜色,比如git status
git config --global color.ui true
第三章 常用命令
git常用命令
1.创建仓库
- a.当前目录创建仓库,即把当前目录的文件开始用git管理,该命令会在当前目录下创建一个.git目录
git init - b.指定目录创建仓库
git init 目录名
2.设置配置
- a.全局配置,用户名和邮箱-必须
git config --global user.name woniu
git config --global user.email woniu@163.com
cat ~/.gitconfig 查看配置文件 - b.设置本地仓库配置
git config --local user.name woniu
git config --local user.email woniu@163.com - c.查看配置信息
git config --global --list
3.工作区文件新增到暂存区
- a.提交指定文件
git add a.cpp - b.提交当前目录所有文件
git add . - c.把提交过暂存区,已经发生改变的文件再次提交到暂存区
git add -u
4.暂存区文件提交到版本库
git commit -m "初始版本"
5.查看git提交日志
- a.全部日志
git log - b.简化日志
git log —oneline 官网是git log —pretty=oneline 可以试下
git log —stat 简略日志 - c.查看前5个日志
git log -n5 --oneline - d.查看所有日志
git log --all - e.图像化查看所有日志
git log --all --graph
6.查看上次提交后是否有修改
git status
7.查看差异
- a.查看工作区与暂存区差异
git diff - b.查看暂存区与仓库之间的差异
git diff --cached - c.比较不同commit的差异
git diff HEAD1 HEAD2
8.清空暂存区,工作区修改
git reset --hard
- 删除工作区和暂存区文件
git rm 文件名
10.重命名文件
其实相当前于mv 文件 文件名 、git rm、 git add3个步骤
git mv a.cpp b.cpp
11.版本回滚
- a.恢复暂存区和HEAD一致
git reset HEAD - b.恢复暂存区指定文件与HEAD一致
git reset HEAD -- 文件名 - c.恢复工作区与暂存区一致
git checkout -- 文件名
*d.回退到指定commit,会清楚之后提交的commit
git reset --hard HEAD
分支管理
1.创建分支
- a.直接创建
git branch dev(分支名) - b.基于某个历史版本创建分支
git branch dev HEAD
2.查看分支
git branch -av
3.删除分支
git branch -d dev(分支名)
4.切换分支
git checkout dev
5.查看分支差异
- a.查看分支差异
git diff dev master - b.查看分支指定文件差异
git diff dev master -- index
6.本地仓库推送到远端仓库
- a.Git代码托管平台创建仓库
http地址:https://gitee.com/woniu/git-test.git - b.本地仓库与远端仓库关联
git remote add originhttps://gitee.com/woniu/git-test.git - c.如果远端仓库是空的
git push -u origin master
一般远端仓库都会有readme文件,解决方案
git pull --rebase origin master - d.提交到远程仓库
git push origin master
7.拉取远程分支
- a.拉取远程分支,默认拉取主分支
git clonehttps://gitee.com/woniu/git-test.git - b.拉取远程指定分支
git clone -b devhttps://gitee.com/woniu/git-test.git - c.拉取主分支后,基于远端指定分支本次创建新分支
第四章 Git常见命令速查表
- 2019-01-01
- Git
- 预计阅读 7 分钟
Git常见命令速查表
名词
- master: 默认开发分支
- origin: 默认远程版本库
- Index / Stage:暂存区
- Workspace:工作区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
一、新建代码库
- 在当前目录新建一个Git代码库
git init - 新建一个目录,将其初始化为Git代码库
git init [project-name] - 下载一个项目和它的整个代码历史
git clone [url] - 查看本地库状态
git status
二、配置
Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。
- 显示当前的Git配置
git config --list - 编辑Git配置文件
git config -e [--global] - 设置提交代码时的用户信息
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
三、增加/删除/修改文件
- 查看状态
git status - 查看变更内容
git diff - 添加指定文件到暂存区
git add [file1] [file2] ... - 添加指定目录到暂存区,包括子目录
git add [dir] - 添加当前目录的所有文件到暂存区
git add . - 添加每个变化前,都会要求确认(对于同一个文件的多处变化,可以实现分次提交)
git add -p - 删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ... - 停止追踪指定文件,但该文件会保留在工作区
git rm --cached [file] 停止追踪目录 git rm -r --cached logs/ temp/ - 改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed]
四、代码提交
- 提交暂存区到仓库区
git commit -m [message] - 提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message] - 提交工作区自上次commit之后的变化,直接到仓库区
git commit -a - 提交时显示所有diff信息
git commit -v - 使用一次新的commit,替代上一次提交(如果代码没有任何新变化,则用来改写上一次commit的提交信息)
git commit --amend -m [message] - 重做上一次commit,并包括指定文件的新变化
git commit --amend [file1] [file2] ... - 提交并push
git commit -m "提交信息" && git push
五、分支
- 显示所有本地分支
git branch - 出所有远程分支
git branch -r
git branch -v - 出所有本地分支和远程分支
git branch -a - 新建一个分支,但依然停留在当前分支
git branch [branch-name] - 新建一个分支,与指定的远程分支建立追踪关系
git branch --track [branch] [remote-branch] - 删除分支
git branch -d [branch-name] - 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
git push: - 新建一个分支,并切换到该分支
git checkout -b [branch] - 切换到指定分支,并更新工作区
git checkout [branch-name] - 切换到上一个分支
git checkout - - 建立追踪关系,在现有分支与指定的远程分支之间
git branch --set-upstream [branch] [remote-branch] - 合并指定分支到当前分支
git merge [branch] - 衍合指定分支到当前分支
git rebase - 选择一个commit,合并进当前分支
git cherry-pick [commit]
六、标签
- 列出所有本地tag
git tag - 基于最新提交创建tag
git tag - 删除本地tag
git tag -d - 删除远程tag
git push:
git push origin :refs/tags/[tag-name] - 查看tag信息
git show [tag] - 提交指定tag
git push [remote] [tag] - 提交所有tag
git push [remote] --tags - 新建一个分支,指向某个tag
git checkout -b [branch] [tag]
七、查看信息
- 显示有变更的文件
git status - 显示当前分支的commit历史
git log - 显示当前分支的commit历史 ,以及每次commit发生变更的文件
git log -stat
git log 查看版本详细信息 - 搜索commit历史,根据关键词
git log -S [keyword] - 显示某个commit之后的所有
提交说明
,每个commit说明
占据一行
git log HEAD --pretty=format:%s - 显示某个文件的版本历史,包括文件改名
git log --follow [file]
git whatchanged [file] - 显示指定文件相关的每一次diff
git log -p [file] - 显示过去5次提交
git log -5 --pretty --oneline - 显示所有提交过的用户,按提交次数排序
git shortlog -sn - 显示指定文件是什么人在什么时间修改过
git blame [file] - 显示暂存区和工作区的差异
git diff - 显示暂存区和上一个commit的差异
git diff --cached [file] - 显示工作区与当前分支最新commit之间的差异
git diff HEAD - 显示两次提交之间的差异
git diff [first-branch]...[second-branch] - 显示今天你写了多少行代码
git diff --shortstat "@{0 day ago}" - 显示某次提交的元数据和内容变化
git show [commit] - 显示某次提交发生变化的文件
git show --name-only [commit] - 显示某次提交时,某个文件的内容
git show [commit]:[file] - 显示当前分支的最近几次提交,查看版本信息
git reflog
八、远程操作
- 下载远程仓库的所有变动
git fetch [remote] - 取回远程仓库的变化,并与本地分支合并
git pull [remote] [branch] - 显示所有远程仓库
git remote -v - 显示某个远程仓库的信息
git remote show [remote] - 增加一个新的远程仓库,并命名
git remote add [shortname] [url]
git remote add 别名 远程地址 - 上传本地指定分支到远程仓库
git push [remote] [branch]
git push 别名 分支 - 强行推送当前分支到远程仓库,即使有冲突
git push [remote] --force - 推送所有分支到远程仓库
git push [remote] --all - 删除远程分支或标签
git push:<branch/tag-name>
九、撤销
- 撤销工作目录中所有未提交文件的修改内容
git reset --hard HEAD
git reset --hard 版本号 - 撤销指定的未提交文件的修改内容
git checkout HEAD - 撤销指定的提交
git revert - 退回到之前1天的版本
git log --before="1 days" - 恢复暂存区的指定文件到工作区
git checkout [file] - 恢复某个commit的指定文件到暂存区和工作区
git checkout [commit] [file] - 恢复暂存区的所有文件到工作区
git checkout . - 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
git reset [file] - 重置暂存区与工作区,与上一次commit保持一致
git reset --hard - 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
git reset [commit] - 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
git reset --hard [commit] - 重置当前HEAD为指定commit,但保持暂存区和工作区不变
git reset --keep [commit] - 新建一个commit,用来撤销指定commit ( 后者的所有变化都将被前者抵消,并且应用到当前分支 )
git revert [commit]
十、储藏
- 暂时将未提交的变更储藏
git stash - 查看现有的储藏
git stash list - 应用最近的储藏
git stash apply - 应用某储藏
git stash --index - 应用某储藏并删除该储藏
git stash pop - 移除某储藏
git stash drop ${stash-name}
十一、其他
生成一个可供发布的压缩包
git archive
二、过滤规则
- 一行只能出现一个语句。
- 规则的执行顺序是从上到下。
- 所有空行或者以# 开头的行都会被 Git 忽略。
- 匹配模式如果是末尾跟“/”则表示过滤目录。
- *匹配多个字符。
- 模式前使用“!”表示忽略模式以外的文件或目录。
- ?匹配单个字符。
- "[]"匹配放括中的任一字符
- #清空缓存
git rm -r –cached
例子:
#过滤项目下的有所.c文件
*.c
#过滤整个项目文件
/*
#过滤目录/filename/
/filename/
#过滤/目录下的所有.cpp文件,无法过滤/filename/name.cpp
/*.cpp
#保留所有的.cpp文件
!*.cpp
#保留/filename/目录及其下所有文件
!/filename/
#保留/目录下所有.c和.o文件
!/*.[co]
#过滤/目录下所有文件,但只保留.cpp文件
/*
!/*.cpp
#语句执行顺序从上到下,下面那条语句的执行结果将使上面那条语句无效。整个项目的文件都将被过滤。
!/.cpp
/
#注意:这里单独介绍一种特殊情况,
#过滤/~/文件下的所有目录,但是保留/~/目录下的所有.cpp文件
//
!//.cpp
#如果你还想保留/~/~/目录下的所有.cpp文件,那么这么写就是错误的
#要先保留目录级小的文件,再保留目录级别较大的。
///*
!///*.cpp
#如下是正确写法
///*
!///.cpp
//*
!//.cpp
#下面这条语句将无效,因为一行只能出现一个语句。
*.c #注释内容
#在用多语句规格时应该注意上下语句的目录等级应该一致。
#正确语句,上下都是三级目录
/filename1/filename2/*
!/filename1/filename2/*.cpp
#错误语句,上面二级目录,下面是三级目录
/filename1/filename2/
!/filename1/filename2/*.cpp
#错误语句,上面是二级目录,下面是三级目录
/filename1/*
!/filename1/filename2/*.cpp
#过滤/a1/b/,/a2/b/,/b/等等目录下所有文件
b/*
#过滤/b/下的所有目录
/b/*
#次修改完.gitignore文件后,运行以下命令执行更改
git rm -r --cached .
git add .
git commit -m "描述性语句"
git push
比如可以代表一切的字符串,可以是0个也可以是任意多个字符。[abc]表示匹配方括号当中的任何一个字符,?表示匹配任何一个字符。[0-9]表示匹配0-9当中任意一个数字,两个号表示任何中间目录,比如src/**/build,可以匹配到src/test/build,也可以匹配到src/current/build。
在使用.gitignore文件后如何删除远程仓库中以前上传的此类文件而保留本地文件
在使用git和github的时候,之前没有写.gitignore文件,就上传了一些没有必要的文件,在添加了.gitignore文件后,就想删除远程仓库中的文件却想保存本地的文件。这时候不可以直接使用"git rm directory",这样会删除本地仓库的文件。可以使用"git rm -r –cached directory"来删除缓冲,然后进行"commit"和"push",这样会发现远程仓库中的不必要文件就被删除了,以后可以直接使用"git add -A"来添加修改的内容,上传的文件就会受到.gitignore文件的内容约束。
第五章 可能出现的问题
-
问题:# SSL_read: Connection was reset, errno 10054
-
方案: git config --global http.sslVerify "false"
- git rm -r --cached logs/ temp/ **
- git** commit -m "Remove logs and temp from tracking" **
- git** push origin main # 推送到远程