使用git的时候,总会碰到一些奇怪的报错,这里汇总一下git常见的报错信息以及解决方法


文章目录

  • 一、git 提交代码从建立本地仓库到代码提交步骤
  • 二 拉取远程仓库部分文件
  • 三 git 案例分析
    • 3.1 git 查看分支
    • 3.3 git 新建分支
    • 3.4 git 本地分支追踪远程分支
      • 3.4.1 设置追踪关系
      • 3.4.2 修改追踪关系
    • 3.2 git log 查看日志提交记录
    • 3.4 git 删除分支
    • 3.4 git reset 回滚历史
    • 3.5 业务实操
  • 四 git 常见报错汇总
    • 1.refusing to merge unrelated histories
    • 2.Updates were rejected because the tip of your current branch is behind its remote counterpart.
    • 3 The following untracked working tree files would be overwritten by checkout
    • 4 error: failed to push some refs to
  • 总结

一、git 提交代码从建立本地仓库到代码提交步骤

#设置全局的名称
git config --global user.name"xxxx"
#设置全局账号
git config --global user.email"xxxxx@qq.com"
#查看配置文件 名称和账号是否设置成功
git config --list
#不成功也可执行更改命令  git config --replace-all user.name "name"git config --replace-all user.email "123@qq.com"
#新建仓库的两种方式
#方式一: 初始化一个本地仓库,再用 pull 命令拉取代码,这样做的好处是没有项目最外一层,可直接拉取内容
#创建本地仓库
git init ;
#关联上远程仓库
git remote add  origin  远程仓库地址
#查看是否关联上远程仓库
git remote -v
#拉取代码
git pull origin [远程仓库分支名]  #方式二:直接克隆远程仓库,这样会把远程仓库整个拉取下来,可不用再执行一次pull代码的命令
git clone -b 分支名称 远程仓库地址
#添加本地代码到本地存储区
git add .  #提交代码
git push origin [本地分支]:[远程分支]
#查看提交代码记录
git log  

git push后各种参数的作用

//a.远程已有master分支并且已经关联本地分支local且本地已经切换localgit push//b.远程已有master分支但未关联本地分支local且本地已经切换到localgit push -u origin/master//c.远程没有master分支并,本地已经切换到local
git push origin local:master

当然 你也可以拉从远程仓库第一次只拉取代码,设置好账号密码后,直接

git clone 远程仓库地址

其余一些常用的命令有

git branch  //查看当前所属分支git checkout 分支名 //切换分支//此时如果要将A分支合并 master 分支,切换到master分支 ,然后执行
git merge a ;

二 拉取远程仓库部分文件

有时我们只想要拉取远程仓库的部分文件。比如多模块项目,我们只想拉取gateway模块;或者git仓库中项目根目录包括了文档和代码,我们只想拉取代码。这时我们可以这样做。

示例:

例如chatapp_java 项目根目录下有cloud-gateway-9001、cloud-api-9002等各个模块代码,我们只想拉取并同步 cloud-gateway-9001

#初始化仓库
git init #关联上远程仓库
git remote add  origin  远程仓库地址#开启sparse checkout功能
git config core.sparsecheckout true#将cloud-gateway-9001/目录写入到git信息目录下的sparse-checkout文件中
echo "cloud-gateway-9001/" >> .git/info/sparse-checkout#确认sparse-checkout文件存在,并且写入成功
cat .git/info/sparse-checkout #拉取远程master分支
#--depth=1 用来指定克隆的深度,1表示克隆最近的一次commit。用于拉取提交次数特别多的项目效率会很快
git pull --depth=1 origin master

三 git 案例分析

git作为版本控制工具,核心的就是它灵活的分支提交回滚,下面会为大家演示一套完成的操作。从生成分支,提交分支代码,合并分支,并结合实际开发场景讲解分析。

在正式演示之前,我们先了解一下git的几个基本知识。

3.1 git 查看分支

git branch 是git 分支的主要操作指令 在其后面加上指定的参数,可以达到不同查看分支的效果

具体指令如下

指令 效果
git branch 查询本地所有分支
git branch -r 查询远程所有分支
git branch -a 查看所有分支,包括远程和本地
git brach -vv 查看本地分支及其追踪的分支

3.3 git 新建分支

本地分支的创建主要是使用git branch 加分支名创建,对git 远程分支的所有操作基本都和 git push 指令相关名,如创建、删除远程分支等

指令 效果 示例
git branch 分支名称 新建本地分支 git branch test
git push -u origin 远程分支名 将本地分支代码传递到远程仓库,并且创建远程分支 git push -u origin dev

一般新建远程分支,要先切换到对应的本地分支下,如要创建dev的远程分支

先新建本地分支dev git branch dev

然后切换到本地分支 git checkout dev

然后新建远程分支并追踪远程分支 git push -u origin dev

3.4 git 本地分支追踪远程分支

git 的本地分支和远程 分支有一对一的追踪关系,使用本地分支追踪一条指定的远程分支后,可以直接使用 git push指令提交记录,不需要再 使用 git push origin 远程分支 这样的操作。

我们可以使用 git branch -vv 查看本地分支和远程分支的追踪关系

3.4.1 设置追踪关系

  • 使用git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名>

    使用此种方式可以在本地分支已经追踪了某个远程分支的情况下,修改追踪的远程分支,远程分支必须要已存在

    例如:git branch --set-upstream-to=origin/remote_branch your_branch

  • git push -u <远程主机名> <本地分支名>

    加上-u参数,这样push时,本地指定分支就和远程主机的同名分支建立追踪关系。远程分支可以不存在

    例如:git branch -u origin/dev dev

  • git checkout -b <本地分支名> <远程主机名>/<远程分支名>

​ 新分支指针指向 <远程主机名>/<远程分支名> 所指的位置。

3.4.2 修改追踪关系

比如本地分支 test 原本追踪了 远程分支 test ,但是我想把它改为追踪 test2,以下有两种修改方式:

如果远程仓库已经存在 test2

使用git branch --set-upstream-to=<远程主机名>/<远程分支名> <本地分支名> 指令修改

如果远程仓库没有 test2

可以到 本地仓库的 .git 文件夹下 打开 config 文件。

该文件记录了本地分支和远程分支的对应关系和git远程仓库的地址,是git 非常重要的一个配置文件

[core]repositoryformatversion = 0filemode = truebare = falselogallrefupdates = trueignorecase = trueprecomposeunicode = true
[remote "origin"]url = git 远程仓库地址fetch = +refs/heads/*:refs/remotes/origin/*
[branch "test"]remote = originmerge = refs/heads/test2

可以看到 [ branch “test” ] , 修改它的 merge为 refs/heads/test2 即可

3.2 git log 查看日志提交记录

指令 效果 示例
git log 查看本地日志 git log
git log orgin/[远程仓库分支名] 查看指定远程仓库的所有提交记录 git log origin/master
git branch -v 可以列出本地每一个分支的最后一次提交。 git branch -v

ps: 只有查看远程分支日志需要在 origin 和 远程分支名中 加一个 ‘/’

3.4 git 删除分支

指令 效果 示例
git branch -d 本地分支名 删除本地分支 git branch -d test
git branch -D 本地分支名 强制删除本地分支 git branch -D test
git push origin 远程分支名 -d 删除远程分支 git branch origin test -d

3.4 git reset 回滚历史

git reset 回滚历史有三种支持的方式,该三种方式主要的区别是 回滚到历史版本后,怎么对待你当前本地仓库的修改记录

指令 效果
–hard 回退到指定版本,清空所有本地修改记录
–soft 回退到指定版本,本地代码恢复成已暂存
–mixed(默认 回退到指定版本,本地代码恢复成未暂存

3.5 业务实操

业务场景

新加一条本地分支test,回退到某个历史版本,修改完部分内容后,提交到新建的远程分支test上。

确定内容没问题后,将远程 test 和 master 合并。

#新建一个本地 test 分支
git branch test#查询当前分支 看看是否创建成功
git branch #切换到test
git checkout test#查看远程仓库所有历史记录
git log orgin/[远程仓库分支名]#将test 分支回退到指定的版本
git reset [回退方式] 提交的commit-id#将回退后的 test 的本地分支 提交到 远程仓库(如果这时没有远程分支test会创建test,并使本地test分支关联上远程的test)
git push -u origin test    #查看所有分支(包括远程和本地)
git branch -a#查看是否追踪到远程分支
git branch -vv###此时你就可以在test分支上进行以前的一些代码bug等修改操作
###当你在以前的版本修改迭代了一定次数后,想把test合并提交到master#将本地分支切换到master
git checkout master#拉取一下master的代码,确保master当前是最新版本
git pull origin master#将本地master分支和 test 合并
git merge test#合并之后 提交到 master
git push origin master#删除本地test分支
git branch -d test#删除远程test分支
git push origin test -d

四 git 常见报错汇总

1.refusing to merge unrelated histories

git出现此问题是因为两个仓库不同而导致的,需要在后面加上–allow-unrelated-histories进行允许合并,即可解决问题

git pull origin master --allow-unrelated-histories

2.Updates were rejected because the tip of your current branch is behind its remote counterpart.

方法一:使用强制push的方法(这样会使远程修改丢失,一般是不可取的):

 git push -u origin master -f

方法二:push前先将远程repository修改pull下来

  git pull origin mastergit push -u origin master

方法三:若不想merge远程和本地修改,可以先创建新的分支:

//创建一个新的分支
git branch [新分支name]//第一次提交需要加 -u参数后,后面的提交就直接可以 git push
git push -u origin/[远程分支name]

3 The following untracked working tree files would be overwritten by checkout

这个报错是切换分支时,由于一些untracked working tree files引起的问题。所以只要解决了这些untracked的文件就能解决这个问题

#sourcetree 切换到终端 或者 gitbash
git clean -d -fx

4 error: failed to push some refs to

当我们想把自己本地的某个项目关联到远程仓库并推送上去,报了这个错误。这是由于我们创建远程仓库的时候,默认帮我们在仓库创建了README文件和忽略文件,并提交了,当我们想要把本地仓库和远程仓库创建连接的时候,两方都是有内容,并且没建立过联系的。这个时候你拉取,就会提示你拉取失败。
解决方法

git pull --rebase origin master
//这个时候你再上传和拉取就可以了,如再提交你的本地代码
git push -u origin master

总结

以上就是今天要讲的内容,本文仅仅简单介绍了我遇到的git使用的问题,如有补充和问题也欢迎留言或者私信

Git 提交常见问题总结相关推荐

  1. atom 中首次使用git_使用Atom获得更好的Git提交消息

    atom 中首次使用git by Hasit Mistry 通过Hasit Mistry 使用Atom获得更好的Git提交消息 (Get Better Git Commit Messages with ...

  2. Git提交到多个远程仓库(多看两个文档)

    Git提交到多个远程仓库(多看两个文档) 一.总结 一句话总结: 二. Git提交到多个远程仓库(多看两个文档) 有两种做法,先看第一种 一.通过命令行进行操作 例如我有下面两个仓库: Mybatis ...

  3. Git提交时提示‘The file will have its original line endings in your working directory’

    Git提交时提示'The file will have its original line endings in your working directory' Git出现错误 git add -A ...

  4. mac电脑Git提交代码到Github提示git-credential-osxkeychain 验证解决方案

    mac电脑Git提交代码到Github提示git-credential-osxkeychain 验证解决方案 参考文章: (1)mac电脑Git提交代码到Github提示git-credential- ...

  5. 使用git提交到github,每次都要输入用户名和密码的解决方法

    使用git提交到github,每次都要输入用户名和密码的解决方法 参考文章: (1)使用git提交到github,每次都要输入用户名和密码的解决方法 (2)https://www.cnblogs.co ...

  6. git 提交失败 HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large

    为什么80%的码农都做不了架构师?>>>    关于git提交失败报错POST git-receive-pack (chunked)或者HTTP 413 curl 22 The re ...

  7. 解决git提交敏感信息(回退git版本库到某一个commit)

    解决git提交敏感信息(回退git版本库到某一个commit) Fri 07 June 2013 git是一个很好的版本库, 现在很多人用它, 并在github上创建项目, 相信大家都有过将敏感信息提 ...

  8. git提交时支持文件名大小写的修改

    在windows环境下,git提交文件时,默认对文件名大小写不敏感,若修改了文件名字的大小写,可能会导致提交时没有记录,文件名修改不成功.网上搜集了几种解决方法,现总结下: www.cnblogs.c ...

  9. Git提交项目到GitHub

    一.GitHub新建项目 1.进入Github首页,点击New repository新建一个项目 2.填写相应信息后点击create即可 Repository name: 仓库名称 Descripti ...

最新文章

  1. JSP+Servlet基础一
  2. 有關window.showModalDialog的應用11/30
  3. 【ABAP】SAP供应商自定义决裁生成实现
  4. 实现水电气一卡通 IC卡扇区分配
  5. 有了防火墙、IPS、WAF 还需要数据库审计?
  6. Linux C/C++ UDP Socket 网络通信
  7. HTML悬浮音乐播放器源码 自带后台
  8. [数位DP]JZOJ 3363 Number
  9. 怎样组建云计算机,如何搭建云计算平台_搭建云计算平台步骤
  10. mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
  11. bzoj2298: [HAOI2011]problem a
  12. android modbus 串口,手机Modbus 安卓Modbus调试软件
  13. vue + vant 使用阿里图标库
  14. python中实现简单抽样的函数
  15. PHP电子合同对接流程,电子合同订立程序步骤
  16. 如何利用自定义函数把阳历转换成阴历
  17. html如何让网页有图标,HTML设置网页图标的两种方法
  18. 企业项目实战k8s篇(十)Volumes配置管理
  19. 实现同步未读消息条数
  20. 全球首例!韩国或将禁止苹果和谷歌向开发者收佣

热门文章

  1. 城市系统应用其一-表征城市交通模式
  2. 服务器和交换机物理连接_「网络安全」网络设备篇(6)——四层交换机
  3. Samba:centos服务器之间相互共享文件夹,可以用win10连接共享文件夹,并可以使用Docker部署
  4. 数学建模-数学规划模型
  5. 4384---一方通行与最后之作 (sdut oj)
  6. idea中为啥要用maven
  7. SQL 获取年度第几周
  8. css修改方框内容,CSS改变checkbox的方框及对勾的粗细
  9. android通知栏设置,android系统通知栏提示消息
  10. Android实现仿制手机卫士的一键加速的百分框