Git 提交常见问题总结


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


一、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且本地已经切换local
 git push
 
//b.远程已有master分支但未关联本地分支local且本地已经切换到local
 git 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 = 0
	filemode = true
	bare = false
	logallrefupdates = true
	ignorecase = true
	precomposeunicode = true
[remote "origin"]
	url = git 远程仓库地址
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "test"]
	remote = origin
	merge = 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 master
  git 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 配置 SSH

参考文章:
Git 配置 SSH 拉取代码

总结

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在IDEA中,你可以使用不同的方法来撤回已经提交的代码,具体取决于你想要回退到的版本。以下是几种常见的撤回代码的方法: 1. 如果你只是想撤回已经add到git索引中的代码,可以右键选中项目,选择Git -> Repository -> Reset Head,然后点击Reset按钮。这将撤销你的本地索引并回到上一个版本的状态。 2. 如果你已经commit到本地仓库并且想要撤销某个提交,你可以打开Version Control的log页面,在你要回退的那个提交上右键,选择Undo Commit,然后点击OK即可完成回退。在Version Control的Local Change中,你可以查看已经回退撤回的代码[1]。 3. 如果你想要撤回已经push到远程仓库的代码,可以按照以下步骤进行操作: a. 首先,将本地源码回退到你想要回退的版本状态。你可以复制要回退的版本号,然后打开Reset HEAD,将复制的版本号粘贴到"To Commit"处,点击Reset按钮。这将使你的本地源码回退到指定的版本状态。 b. 然后,删除远程仓库中已经push的代码。在Version Control的log页面中,你会看到远程仓库中的代码并未被删除。这是因为刚才的操作只是将本地源码回退到了指定版本的状态,但本地源码仍然存在。为了删除远程仓库中的代码,你可以在命令行中运行"git push -f"命令。这将强制将本地仓库目前的代码版本提交到远程仓库,从而删除远程仓库中的指定版本的代码。 除了以上的方法,如果你只是想修改最后一次commit的注释,你可以运行"git commit --amend"命令进入vim编辑模式,修改完注释后保存即可。 总结起来,撤回已经提交的代码可以通过回退到上一个版本、撤销某个提交或强制提交到远程仓库来实现。具体的方法取决于你的需求和当前的代码状态。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [IDEA 回退GIT代码](https://blog.csdn.net/weixin_44623215/article/details/119328362)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [IDEA 提交git 之后撤回操作](https://blog.csdn.net/qq_37158147/article/details/131768815)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值