git使用笔记

git使用笔记
文章目录git clonegit clone会创建文件夹吗?git addgit addgit add filegit add -Agit add -ugit add *git add .(推荐)git add时添加授权git diffgit commitgit commit 提交乱码git config设置全局编码报错error: key does not contain a section: –-globalgit注释的重要性修改用户名、邮箱以及重设配置commit比较常用(推荐)idea git分支比远程少查看所有远程分支git.exe的几个可能的地址其他文档地址报错git报错 cannot spawn ssh: No such file or directoryidea界面pull的时候报错 Login failed.Check API token or GitLab version.Log in via Git if the version is older than 14.0。git bash可以pullidea pull 一直没反映git config --global http.sslVerify false 关闭ssl证书校验git地址明明可以访问但是git clone的时候超时git bash会带git吗--表示参数idea中git合并分支2024-10-30 实战处理分支问题git cherry-pick commitId(支持多个commitId以及区间commitId)git cherry-pick的几种写法还原到某次提交 重git强制更新(强制拉取)gitignore添加了.class、target为什么还是提交上去gitignore支持多层级吗?对git肯定不陌生会用tortoiseGit也会用idea但是会用git的命令吗发现自己啥都不会实在不像话。先从最简单的开始。git clone不指定分支(会拉取所有分支默认是指向master分支)gitclone gitgitee.com:chushiyungitee/fastapi-demo.git -b指定分支(只拉取指定分支)gitclone-bdev gitgitee.com:chushiyungitee/fastapi-demo.gitgit clone会创建文件夹吗?会的例如项目名叫fastapi-demo创建了文件夹masterdev。进入master文件夹右键git bash输入 git clone命令会在master下创建fastapi-demo然后这个文件夹下才是.git等文件。也就是说git clone会在当前文件夹下创建项目文件夹。git add不要小看这个命令直接也是无法使用的。报错On branch xxx Your branch is up todatewithorigin/xxx.Changes not stagedforcommit: modified: custom/src/main/java/com/test/TTT/.java no changes added to commit是需要先添加git add .然后就可以了。那么知识又来了git add命令也不能乱用(见本文git add命令)。git addgit add添加指定的文件到暂存区注这个命令也不简单文件的路径怎么拿?如果路径不对会报错命令gitaddCustomUtils.java 返回 fatal: pathspecCustomUtils.javadid not match any files所以最好结合git ls-files | grep CustomUtils来使用就能拿到完整的文件路径再提交即可。git add -Agit add --all 的缩写添加所有变更的文件到暂存区git add -ugit add --update的缩写添加被修改(modified)和被删除(deleted)文件不包括新文件(new)git add *添加新文件(new)和被修改(modified)文件不包括被删除(deleted)文件git add .(推荐)会把本地所有untrack的文件都加入暂存区并且会根据.gitignore做过滤但是git add * 会忽略.gitignore把任何文件都加入.(推荐一般用这个就可以)一般用这个就可以。git add时添加授权场景代码中有start.sh开发环境是windows没法授权。解决方案add时添加授权命令gitadd--chmodx start.sh然后再push下这样从服务器pull下来就有x权限了。git diff提交前看有哪些改变用这个命令就行。上下键可以翻动内容也支持/(左斜杠搜索等)。git commitgit commit -m “提交内容”git commit 提交乱码设置下全局编码即可。后面不带配置是查看gitconfig--globali18n.commit.encodinggitconfig--globali18n.log.encoding 带配置是设置gitconfig--globali18n.commit.encoding utf-8gitconfig--globali18n.log.encoding utf-8实测问题解决。git config设置全局编码报错error: key does not contain a section: –-global命令git config–-global i18n.commitencoding utf-8这就搞笑了还以为–global不能在命令行中使用呢仔细一看是第一个横岗没写对。git注释的重要性首先强调一点提交的时候必须写注释必须写注释必须写注释重要的事情说三遍。因为如果不写注释过段时间查看log的时候连自己也看不懂每次提交干了什么。 这太可怕了…例如模板为项目名本次提交的功能名 改动1 改动2内容为阿里飞天 基础框架搭建 1、引入了spring-cloud 2、引入了xx-job注释要本着至少能把事情说清楚尽量全的原则。如果代码量不多甚至可以细化到哪个类的哪个方法甚至哪行。修改用户名、邮箱以及重设配置命令如下查看用户名和邮箱gitconfig user.namegitconfig user.email 修改用户名和邮箱gitconfig--globaluser.namechushiyun111.comgitconfig--globaluser.emailchushiyun111.com如果还是有问题pull或者push超时问题。那么重置下密码吧然后再输入账号密码后续就可以了。gitconfig--system--unsetcredential.helpercommit比较常用(推荐)查看远程地址git remote -v查看分支:git branch -v # 查看git分支(这个其实还好用些) git branch -a#head指向的是当前分支查看当前分支:git branch查看git地址命令git--exec-path 结果 C:/Program Files/Git/mingw64/libexec/git-core查看git文档地址命令git--html-path 结果 C:/Program Files/Git/mingw64/share/doc/git-docidea git分支比远程少解决方案很简单1、项目上右键git fetch发现果然可以了。2、或者执行命令git fetch --all也是可以的。查看所有远程分支git branch -r | grep aaa# 虽然是查看远程分支但是如果没有fetch过来也是看不到的。git.exe的几个可能的地址为什么要整理这个呢? 因为如果直接搜索git.exe好几个位置都可以搜索到不知道配置哪个了。C:\Program Files\Git\bin# 一般来说配置这个就行 但是git --exec-path返回的是C:\Program Files\Git\mingw64\libexec\git-core 这是正常的。C:\Program Files\Git\cmd C:\Program Files\Git\mingw64\bin C:\Program Files\Git\mingw64\libexec\git-core其他文档地址官网地址https://git-scm.com官网文档地址https://git-scm.com/doc突然发现这个文档已经支持选择不同语言了右上角的topics右边是有的。git cheat sheet备忘录pdf版https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf报错git报错 “cannot spawn ssh: No such file or directory”git branch -v的时候报错 “cannot spawn ssh: No such file or directory”1、环境变量添加 GIT_SSHC:\Program Files\Git\usr\bin\ssh.exe2、一般就可以解决了如果还有问题可以试下 git config --global core.longpaths true 这个用来解决路径长度不大于260的问题。(在这里不确定有用)配置完毕后记得重启下idea。idea界面pull的时候报错 Login failed.Check API token or GitLab version.Log in via Git if the version is older than 14.0。报错Login failed.Check API token or GitLab version.Log in via Git if the version is older than 14.0。用token而不是用账号密码好奇怪啊。解决方案这其实是gitlab报的错也就是gitlab插件惹的祸禁用掉果然变成了熟悉的账号密码界面。git bash可以pullidea pull 一直没反映先确定2者配置一致都到settings里面看看。git config --global http.sslVerify false 关闭ssl证书校验git地址明明可以访问但是git clone的时候超时超时可能是网不通。1、先确认地址是否存在。2、如果可以访问但是clone超时那可能是ssl证书校验问题执行上述sslVerify false对应命令关闭掉即可。git bash会带git吗一般会带的但是再装个git也是可以的。–表示参数–表示参数 --表示参数 --表示参数重要的事情说3遍。 当然也不只git其他很多也是–表示参数。idea中git合并分支例如分支a 基于分支a创建分支b。分支b先提交了代码分支a后续又提交了代码可以合并上吗。当然可以的。先检出b分支checkout a分支本地肯定是没有的不过没关系pull一下就会自动将远程设置为a分支的远程。pull过来最新代码。然后切换回a分支右键merge b分支发现都合并过来了再push下b分支远程也有了。2024-10-30 实战处理分支问题场景线上是9月的版本中间有很多迭代因为政策调整基于最新代码拉了个分支并提交了3次。也就是说需要9月份的版本加上新分支的3次提交。操作步骤先找到9月的那次commitIdidea中reset current branch to here。 # 对应命令为 git reset commitId --hard然后分别 git cherry-pick 那三次commitId。再根据当前代码new一个分支推送上去。实测可以。注这里批量cherry-pick为什么会有问题呢?不是用两个点代表区间吗?后来翻了下资料 应该是git cherry-pick commitId1^..commitId2#带表示包含commitId1(如果不加那么第一个肯定漏掉了)git cherry-pick commitId(支持多个commitId以及区间commitId)将一个或几个commitId拿到当前分支支持跨分支的当然同分支也可以。git cherry-pick的几种写法1、多条命令分别执行。2、一条命令多次commitId用空格分隔。3、一条命令多次commitId中间用…分隔如果要包含第一个用^…来连接。还原到某次提交 重场景产品一直在迭代例如今年是2025年线上版本是2024年版本中间有100次commit。那些代码对数据库对其他服务都有依赖所以肯定不能用最新版本。现在要修复个bug操作步骤1、根据标准分支拉取定制分支。2、定制分支检出并还原到某次commit。回退到指定提交gitreset--hard提价id;强制推送 这一步必须否则push不上去因为代码不一样但是pull的话会把后面的所有提交都拉过来。gitpush-forigin 定制分支;# 如果报错 可以加-f强制推送试下然后就可以pull和push了。git强制更新(强制拉取)有时候明明没有提交拉取的时候楞是拉取不下来。如果确定本地没有要提交的代码直接用远程的就行那么可以强制拉取gitfetch--allgitreset--hardorigin/mastergitpull实测问题解决。gitignore添加了.class、target为什么还是提交上去正常应该不会。也可以提交代码前先clean下这样.class、target等文件都没了肯定提交不上去了。gitignore支持多层级吗?前后端项目一个git时会遇到这个问题每个项目忽略的内容不一样可以单独设置吗?可以支持多层级。最外层设置通用要忽略的前后端项目单独设置要忽略的文件即可。