• 【人见人爱报错系列】GIt常见问题解决大全


    前言

    在使用的github\gitlab各种hub的过程中,会遇到各种各样的小问题,这些会给程序员们带来五光十色的烦恼,本文总结使用git的各种问题并持续更新。
    在这里插入图片描述

    一、Git用户名邮箱设置

    使用git过程中,会切换不同项目但是发现提交人都是一样的,怎么针对不同项目设置不同的提交人和邮箱呢?

    //查看用户名
    git config user.name
    git config user.email
    
    • 1
    • 2
    • 3

    全局设置

    //修改用户名
    git config --global user.name "Your_username"
    //修改邮箱
    git config --global user.email "Your_email"
    
    • 1
    • 2
    • 3
    • 4

    项目设置

    GIT针对不同项目设置不同提交人及邮箱

    1、进入项目根目录。

    2、进入 .git 文件夹

    3、编辑 config 文件,在最后添加以下内容:

        name = 提交人名称
        email = 邮箱 ```
    
    • 1
    • 2

    二、删除历史提交记录

    以master分支为例,若开启保护分支需关闭。复制master,删除原有分支,用新的分支覆盖旧分支。从而完成分支替换,删除历史记录。

    注:谨慎操作,按以上操作后无法回滚。

    1、本地仓库checkout检出新分支,参数orphan:没有commit记录的分支
    git checkout --orphan bakmaster

    2、添加分支所有文件

    git add -A

    3、将添加的文件提交到本地仓库

    git commit -am "commit description"

    4、删除之前的主分支

    git branch -D master

    5、重命名检出的新分支为master,使他成为主分支

    git branch -m master

    6、强制提交覆盖掉远程仓库的分支

    git push -f origin master

    7、查看日志

    git log

    三、错误push后,回退提交

    1、回滚

    git reset --hard commit -id #commit -id是git log中得到的提交id。

    2、强制推送

    git push origin HEAD --force

    需要注意的是,这个提交会将远程仓库强制覆盖,请谨慎使用。

    四、.gitignore忽略文件修改不起作用

    因为ignore文件中新增的忽略文件在之前的版本中已经提交至远程库。解决办法就是要删除忽略文件在本地的git缓存,再提交至远程库,如下

    # 删除本地缓存
    git rm -r --cached xxx.file
    # 忽略
    git commit -m ``"ignore"
    # 提交远程
    git push
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    五、Git 使用tag相关命令操作

    tag简介

    tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 …这样的标签。

    tag与branch区别:

    tag标记 指向某个commit的指针。branch分支 对应一系列commit,通过HEAD 指针移动。

    tag使用场景:

    如果已经发布了 v1.0 v2.0 v3.0 三个版本。需要在 v2.0 的基础上功能修改或新增等操作,作为 v4.0发布。就可以使用tag检出 v2.0 的代码作为一个 branch 进行开发。

    tag使用

    创建本地
    tag git tag xxx
    创建时增加附注
    git tag -a v1.0 -m "release 1.0 version"

    推送远程

    git push origin xxx

    查看本地某个tag的详细信息

    git show xxx

    查看本地所有tag

    git tag 或者 git tag -l

    查看远程所有tag

    git ls-remote --tags origin

    删除tag名xxx

    git tag -d xxx

    将删除的tag名xxx推送至远端

    git push origin :refs/tags/xxx

    检出tag

    git checkout -b

    六、远程仓库地址改变操作

    git remote set-url origin http://xxx.git
    
    • 1

    七、Git pull\push\merge踩坑报错

    命令简介

    在这里插入图片描述

    git merge

    用于将两个或两个以上的开发历史加入(合并)一起。

    git fetch

    从远程获取最新版本到本地,不会merge(合并)。

    # 语法:git fetch <远程主机名>。
    
    git fetch orgin master
    
    • 1
    • 2
    • 3

    git pull

    从远程获取最新版本并merge(合并)到本地。

    # 语法:git pull <远程主机名><远程分支名>:<本地分支名>。
    git pull origin master:master
    
    • 1
    • 2

    git reset

    将当前的分支重新设置到指定的commit id或者HEAD。

    语法:git reset [- -hard|soft|mixed|merge|keep][或HEAD]
    
    • 1

    HEAD是默认路径。hard、soft、mixed、merge、keep是设置的模式。通常回滚代码时,使用- -hard,表示自commit id以来,工作目录中的任何改变都被丢弃,并把HEAD指向commit id。

    连接报错系列

    fatal: unable to access ‘https://github.com/xxx.git/’: Failed to connect to github.com port 443: Timed out
    git push或者pull的时候报以上错误解决方式:

    git config --global http.sslVerify "false"
    
    • 1

    fatal: unable to access ‘https://github.com/xxx.git/’: OpenSSL SSL_connect: Connection was reset in connection to github.com:443解决:

    git config --global http.sslBackend "openssl"
    git config --global http.sslCAInfo "C:\Program Files\Git\mingw64\ssl\cert.pem" #git安装的路径
    
    • 1
    • 2

    OpenSSL SSL_read: Connection was aborted, errno 10053 Failed to connect to github.com port 443 after 21096 ms: Timed out解决:

    git config --global http.postBuffer 524288000
    git config --global http.sslVerify "false"
    
    • 1
    • 2

    冲突报错系列

    Git Pull Failed
    error: You have not concluded your merge (MERGE_HEAD exists).
    fatal: Exiting because of unfinished merge.

    Git Merge Failed
    fatal: You have not concluded your merge (MERGE_HEAD exists).

    Git Pull Failed
    Your local changes would be overwritten by merge.
    Commit, stash or revert them to proceed. View them

    先备份代码在进行如下操作:
    方法一:舍弃本地代码

    远程版本覆盖本地版本

    git fetch --all
    
    git reset --hard origin/master
    
    git pull
    
    • 1
    • 2
    • 3
    • 4
    • 5

    方法二:保留本地代码

    中止合并–>重新合并–>重新拉取

    git merge --abort
    
    git reset --merge
    
    git pull
    
    • 1
    • 2
    • 3
    • 4
    • 5

    同一分支历史提交记录不同报错

    git pull 时报错:
    fatal refusing to merge unrelated histories

    # 强行合并
    git pull origin master --allow-unrelated-histories 
    # 提交远程
    git push
    
    • 1
    • 2
    • 3
    • 4

    push未设置关联远程分支报错

    使用git push 报如下错误:
    fatal: The current branch master has no upstream branch
    解决
    方式一:

    # 根据需要替换分支名
    git push --set-upstream origin master
    
    • 1
    • 2

    方式二:

    # 根据需要替换分支名 远程分支master不存在会创建
    git push -u origin master
    
    • 1
    • 2

    git路径含空格报错

    error: cannot spawn git: No such file or directory fatal: unable to fork
    Git Bash能正常使用git命令,idea使用命令报错。
    解决:

    调整路径去掉空格
    C:\Program Files\Git\bin\git.exe
    如修改成:
    C:\idea\Git\bin\git.exe

    八、git上传jar包

    打开项目下.gitgnore文件,删除*.jar即可上传。其它格式文件同理

    在这里插入图片描述

  • 相关阅读:
    nodejs将rtsp视频流打上水印后通过websocket发送给前端
    Spring IoC依赖注入-6
    NO.1 | 704. 二分查找,27. 移除元素
    网站收录查询-批量网站收录查询软件
    Spring Boot框架的原理及应用详解(一)
    【牛客 - 剑指offer】JZ50 第一个只出现一次的字符 Java实现
    MySQL 45 讲 | 10 MySQL为什么有时候会选错索引?
    目标资产信息收集
    Servlet和拦截器Filter
    AI人工智能学习之激活函数
  • 原文地址:https://blog.csdn.net/qq_35764295/article/details/127916169