git
git安装
linux离线安装
https://blog.csdn.net/daocaokafei/article/details/115091354
使用ssh key流程
$ ssh-keygen -t rsa -C "your_email@youremail.com"
-
进入id_rsa.pub复制本机的key到github上的设置SSH and GPG keys上添加本地的权限。
-
输入ssh -T git@github.com验证是否成功
-
连接到github仓库:
$git config --global user.name "your_name" $
git config --global user.email "your_email@youremail.com"
以上是输入名字和邮箱
4. 进入要上传的仓库:
cd /user/script/git
git remote add origin git@github.com:yourName/yourRepo.gi
这是Github上提示的路径。按要求更换成自己创建的仓库地址。
5. 提交上传:
git add README //这是添加一个文件
git commit -m "TestCode" //添加一个注释说明TestCode
git push origin master //提交上传
这个是上传到仓库命令
6. 下载:
git pull origin master #拉取远程分支
git pull --all #拉取当前分支所有最新的
git fetch --all #强制拉取远程分支覆盖本地
- git pull命令则相反。修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。
github远程配置
查看远程地址
git remote -v
如果绑定好远程地址的话:
会有两条地址 fetch 和 push ,那么 fetch 表示我们要获取到的地址,push则表示我们要推送的地址。
远程地址设置
- 添加远程地址
git remote add origin http://git.XXXX.com/XXX/XXX.git/
- 修改远程地址
git remote set-url origin http://git.XXXX.com/XXX/XXX.git/
查看配置的远程user.name和user.email
git config user.name //查看用户名
git config user.email //查看用户email
配置远程user.name和user.email
git config --global user.name "it8c"
git config --global user.email "it8c@163.com"
github本地配置
修改github镜像源
git bash中文文件名显示问题
当待提交的文件中有中文命名的文件,大多数是一些文档类文件,使用git status或其它操作进行查看时并不能查看到文件的中文名称,而是编码后的字符,如下图所示:
git config --global core.quotepath false
运行完后,再使用git status命令查看即发现文件名显示已发生变化。
Git命令实践
添加文件
git add filename //提交filename指定文件
git add -A 提交所有变化
git add -u // 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
也可以看这里的一些方法:git 提交时排除一个或多个文件 - 叶新东博客 chn520.cn
使用.gitignore文件排除文件
创建.gitignore文件,并输入以下内容要排除的文件
.obsidian/* #排除.obsidian文件夹下的所有文件
!.obsidian/*.hex #但不包括下面的.hex文件
拉取其他分支到本地
git pull
提交本地内容或分支
-
普通提交
git push origin master
-
强制提交覆盖远程分支即使有冲突
git push [remote] master --force
强制拉取更新远程覆盖当前到本地分支
一共使用三条命令
git fetch --all
git reset --hard origin/master
git pull
使用master分支覆盖本地。使用其它分支,则更改第二条命令的参数。
可以拉取所有远程的分支最新情况,如果关联了origin、gitee、gitlab等等多个远程仓库的话,可以通过--all拉取所有远程最新情况到本地,这里的origin、gitee、gitlab都是关联远程分支的时候自己命名的,比如:git remote add origin git@xxx地址 的时候加上的远程名为origin,可以通过git remote 查看所有关联的远程名;
如果只是关联了一个远程,则可以直接git fetch ,不需要 --all
删除已提交的文件
git rm 要删除的文件
git commit -m "重新提交"
列出本地git仓库中的文件
git ls-files
Git - Error:The following untracked working tree files would be overwritten by checkout
通过错误提示可知,是由于一些untracked working tree files引起的问题。所以只要解决了这些untracked的文件就能解决这个问题。
解决方式
打开SourceTree通过命令行,进入本地版本仓库目录下,直接执行即可。可能很多人都不明白-d,-fx到底是啥意思,其实git clean -d -fx表示:删除一些没有 git add 的文件。
git clean -d -fx
git clean 参数:
- -n 显示将要删除的文件和目录;
- -x -----删除忽略文件已经对git来说不识别的文件
- -d -----删除未被添加到git的路径中的文件
- -f -----强制运行
- git clean -n
- git clean -df
- git clean -f
删除指定分支
- 删除分支
git branch -d 分支名
git branch -D 分支名 #大写D强制删除指定分支
- 删除远程分支
git push origin --delete 分支名
#或者
git branch -dr 分支名
暂存临时切换分支缓存当前工作
当需要临时切换分支,但不想commit时可以使用stash
git stash
git stash list //列出所有暂存
git stash clear //清除所有暂存
当你修复完上个分支切回工作分支时:
git stash apply //应用最新暂存
git stash pop stash@{1} //应用stash@{1}暂存
tag版本
git tag //查看所有tag
git tag <tagname> //创建tag
git tag -d <tagname> //删除tag
git tag -a <tagname> //创建含批注的标tag
git push github --tags //推送所有tag
git push github <tagname> //推送指定tag
git push github :refs/tags/<tagname> //删除远程tagname
git tag -l #查看tag所在分支
github问题与解决
提示服务器证书验证失败,没有CRLfile
fatal: unable to access 'https://github.com/neptune-robotics/robotsystem.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
问题原因:
根本原因是计算机不信任对Gitlab服务器上使用的证书进行签名的证书颁发机构。
这并不意味着证书可疑,它可以是自签名的,也可以由不在系统的CA列表中的机构/公司签名。
方案一:
关闭系统的安全认证。
能解决所有证书问题,操作简单,系统面临一定的风险。
终端输入命令
export GIT_SSL_NO_VERIFY=1
git push报错 Missing or invalid credentials
Missing or invalid credentials.
Error: connect ECONNREFUSED /run/user/1000/vscode-git-ec011034bf.sock
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '/run/user/1000/vscode-git-ec011034bf.sock'
}
Missing or invalid credentials.
Error: connect ECONNREFUSED /run/user/1000/vscode-git-ec011034bf.sock
at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) {
errno: -111,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '/run/user/1000/vscode-git-ec011034bf.sock'
}
remote: [session-fc456392] Unauthorized
fatal: Authentication failed for 'https://gitee.com/zhang567/linux_study.git/'
这其实是证书过期了,重新生成证书解决问题。
VScode中git push代码报错“Missing or invalid credentials.”问题解决记录
解决remote: Invalid username or password问题
需要证书验证,可按以下解决方法。
解决说明:https://blog.csdn.net/jinxinxin1314/article/details/108318998
提示-remote: Support for password authentication was removed on August 13, 2021.
当登录github时提示remote: Support for password authentication was removed on August 13, 2021.
解决地址:https://blog.csdn.net/qq_41646249/article/details/119777084
git的submodule使用
https://zhuanlan.zhihu.com/p/87053283
git submodule 完整用法整理 - 莫水千流 - 博客园 (cnblogs.com)
clone已经克隆的项目的子模块
git submodule update --init --recursive
tig
tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化。
相关文档:
https://www.jianshu.com/p/d9f60c0abbf7
https://zhuanlan.zhihu.com/p/72554875
https://blog.csdn.net/weixin_42465125/article/details/91346365
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具