git

git安装

linux离线安装
https://blog.csdn.net/daocaokafei/article/details/115091354

使用ssh key流程

$ ssh-keygen -t rsa -C "your_email@youremail.com"
  1. 进入id_rsa.pub复制本机的key到github上的设置SSH and GPG keys上添加本地的权限。

  2. 输入ssh -T git@github.com验证是否成功

  3. 连接到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 #强制拉取远程分支覆盖本地
  1. git pull命令则相反。修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。

github远程配置

查看远程地址

git remote -v

如果绑定好远程地址的话:
会有两条地址 fetch 和 push ,那么 fetch 表示我们要获取到的地址,push则表示我们要推送的地址。

远程地址设置

  1. 添加远程地址
git remote add origin http://git.XXXX.com/XXX/XXX.git/
  1. 修改远程地址
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或其它操作进行查看时并不能查看到文件的中文名称,而是编码后的字符,如下图所示:
icon

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 

提交本地内容或分支

  1. 普通提交

    git push origin master
    
  2. 强制提交覆盖远程分支即使有冲突

    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 -----强制运行
  1. git clean -n
  2. git clean -df
  3. 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

git命令下显示乱码

git status中文乱码怎么办-git-PHP中文网

posted @   alvinlyb  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示