Git五个常见问题及解决方法

一、删除远程仓库上被忽略的文件
由于种种原因,一些本应该被忽略的文件被我们误操作提交到了远程仓库了。那么我们该怎么删除这些文件呢?
以误提交了.idea目录为例,我们可以通过下面的步骤处理:
1)我们首先应该清除暂存区的.idea文件,执行命令
# -r代表删除的是文件或者文件夹 --cached 只清除暂存区不清除工作区的
git rm -r --cached .idea
2)在 .gitignore 文件,添加需要忽略的文件。
.idea
之后在提交,就会删除.idea相关文件
git commit -m '提交信息'
git push
git rm 与 git rm --cached 的区别
git rm : 同时从工作区和暂存区删除文件。即本地的文件也被删除了。
git rm --cached : 从暂存区删除文件。但是本地文件还存在,只是不希望这个文件被版本控制。
上面的 .idea文件 显然我自己工作区是不能删除的,只能删除暂存区,所以需要加上 --cached
如图

二、代码开发一半,有新任务了
当你正在巴拉巴拉开发某个需求的时候,你只完成了一半。这时,你又接到了另外一个需求,急需进行开发,之前那个需求可以先放一放。你又不想把它 git commit 提交到版本库,也就是说工作区或者暂存区中有一些你并不想提交到版本库的代码。
这个时候又该怎么办呢?
你就可以使用 git stash 命令来解决这个问题。
- 首先,将工作区和暂存区中的修改,存储到堆栈。
# -u 表示还要存储工作区中新增的文件,如果不加u只会存储工作区中已经存在的文件的修改
git stash save -u "需求 a 只完成了一半"
这样,工作区和暂存区就都干净了。
我们也可以查看堆栈中的 stash 列表。(由于我们只 git stash 存储了一次,故堆栈中只有一个 stash)
$ git stash list
stash@{0}: On main: 需求 a 只完成了一半
也可以查看,stash中存了哪些内容
git stash show
2) 然后,就可以在当前的 dev 分支中,优先完成需求 b
如果需求 b 已开发完成,就将其提交到版本库。
git add .
git commit -m "需求 b 已完成"
# 推送到远程的 dev 分支
git push origin dev
3) 最后,我们将堆栈中的 stash 弹出,应用到当前的工作区
git stash pop
继续完成需求 a 中未完成的工作。如果需求 a 也完成了,也将其提交到版本库。
git add .
git commit -m "需求 a 也完成"
# 推送到远程的 dev 分支
git push origin dev
这就大功告成。
三、git pull代码冲突
当你提交代码的时候,想先 pull一下代码时你发现
$ git pull
error: Your local changes to the following files would be overwritten by merge:
src/main/java/com/open/demo/beans/AppReqParmVO.java
Please commit your changes or stash them before you merge.
Aborting
很明显你本地修改的代码与他人修改提交的有冲突了。文件都告诉你了 AppReqParmVO.java
如何解决?
1)先把本地代码存储起来
git stash
2)然后再去pull远程代码
$ git pull
Updating 5b82c67..3d844c3
Fast-forward
src/main/java/com/open/demo/beans/AppReqParmVO.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
发现已经不报错了,能够正常 pull下来。
3)最后再把本地存储的代码释放出来
$ git stash pop
Auto-merging src/main/java/com/open/demo/beans/AppReqParmVO.java
CONFLICT (content): Merge conflict in src/main/java/com/open/demo/beans/AppReqParmVO.java
释放出来,这里也告诉你有冲突,然后手动解决下冲突,就可以正常提交了。
四、合并分支发生的冲突
上面的问题是同一分支,拉取代码引起的冲突,而这里是在两个分支进行合并的时候,出现了冲突。
比如现在有两个分支,你在dev修改了一个文件后提交成功,而master分支也改了同一个文件也提交成功了,这个时候当你将dev合并到master的时候,你发现合并不了,出现冲突了,这种问题实际开发中也挺常见的。
这里在dev合并到master发生冲突
1)、从dev切到master分支
git checkout master
2)、合并dev
git merge dev
如果有冲突那么就会告诉你哪些文件冲突
$ git merge dev
Auto-merging src/main/java/com/open/demo/beans/AppReqParmVO.java
CONFLICT (content): Merge conflict in src/main/java/com/open/demo/beans/AppReqParmVO.java
Automatic merge failed; fix conflicts and then commit the result.
那你只需找到当前冲突文件,解决冲突即可。
<<<<<<< HEAD
private final long serialVersionUID = -1206184202179044275L;
=======
private long serialVersionUID = -1206184202179044275L;
>>>>>>> dev
修改完重新提交就可以了。
五、master修改代码,推送到dev
你在master修改代码,却需要把修改后代码推送到dev远程分支上
1)、在master上
git add .
git commit -m "本次提交说明"
2)、切换到dev分支
git checkout dev
3)、合并master
git merge master
4)、推送到主仓库
git push
如果dev分支提交代码 需要重新 add 和 commit。
声明: 公众号如需转载该篇文章,那麻烦在文章的头部 声明是转至公众号: 后端元宇宙。尊重作者辛苦劳动果实嘛。同时也可以问本人要该文章markdown原稿和原图片。其它情况一律禁止转载哦!

Git五个常见问题及解决方法的更多相关文章
- NHibernate常见问题及解决方法
NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...
- C#用ado.net访问EXCEL的常见问题及解决方法
C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问. ado.net访问excel的实例: OleDb ...
- [git push] rejecteded 问题的解决方法
错误信息: hint: Updates were rejected because a pushed branch tip is behind its remote hint: counterpart ...
- Nacos 常见问题及解决方法
Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...
- git常见问题及解决方法
简介 由于在git使用过程中会出现各种各样的问题,因此本文将常见的问题记录下来并提供相应的解决方案,方便后续查找. git pull问题: There is no tracking informati ...
- 安装scrapy框架的常见问题及其解决方法
下面小编讲一下自己在windows10安装及配置Scrapy中遇到的一些坑及其解决的方法,现在总结如下,希望对大家有所帮助. 常见问题一:pip版本需要升级 如果你的pip版本比较老,可能在安装的过程 ...
- python网络爬虫(1)——安装scrapy框架的常见问题及其解决方法
Scrapy是为了爬取网站数据而编写的一款应用框架,出名,强大.所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板. 其实在Linux和 Mac安装,就简单的pip命令即可: pip i ...
- 浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法
Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家有所帮助. 一 插件调试不了以及错误导致崩溃的问题 在开发机器上,有时可 ...
- windows python flask上传文件出现IOError: [Errno 13] Permission denied: 'E:\\git\\test\\static\\uploads'的解决方法
在浏览器中输入时,出现IOError: [Errno 13] Permission denied: 'E:\\git\\test\\static\\uploads' http://127.0.0.1: ...
随机推荐
- 小白自制Linux开发板 十. NES游戏玩起来
本篇基于我们制作的Debian文件系统而展开,而且我们这会玩一些高级的操作方式--用我们的小电脑进行程序编译. 所以本篇操作全部都在我们个的开发板上完成. 1. 开发环境搭建 首先安装gcc, ...
- 国产新芯片连不上J-Link?芯海CS32L010系列芯片JLink配置方法
疫情以来芯片供货紧张,特别是ST的MCU一芯难求.所以很多产品不得不切换成国产.不过也是经过使用后才发现,很多国产芯片的性能还是挺好的.由于芯片比较新,官方J-Link还没有支持,所以调试和烧录有些不 ...
- Oracle 相关命令
http://www.mamicode.com/info-detail-2481866.html sql语句 system用户登陆 查看表空间和存放位置 select t1.name,t2.name ...
- no space left on device 磁盘空间不足
新挂载的目录,创建文件提示:no space left on device 1.执行命令:df -h ,查看盘是否挂载成功 2.用history命令查看历史命令,尴尬的发现挂载前忘记格式化了 3.取消 ...
- k8s入坑之路(2)kubernetes架构详解
每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平 ...
- 力扣 - 剑指 Offer 59 - I. 滑动窗口的最大值
题目 剑指 Offer 59 - I. 滑动窗口的最大值 思路1(单调队列) 使用单调(递减)队列,保持队列中的元素是递减顺序,队列头保存的是当前窗口中最大的元素 首先先模拟建立第一个窗口,同时获取第 ...
- SpringCloud升级之路2020.0.x版-33. 实现重试、断路器以及线程隔离源码
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 在前面两节,我们梳理了实现 Feign 断路器以及线程隔离的思路,并说明了如何优化目前的负 ...
- 在dotnet6发布之际,FastNat内网穿透,给开发人员送的硬货福利
一.FastNat可为您解决的问题 1.没有公网服务器,但是想发布共享本地的站点或网络程序到公网上,以供他人访问: 此项功能大大方面开发人员进行远程调试,微信小程序等开发工作进行. 2.需要远程到在其 ...
- C++基本程序设计——面向对象程序设计课堂笔记
主要对老师上课的ppt的笔记整理 C++基本程序设计 1.c++的输入输出 使用cin,cout和流运算符,开头须有 #include<iostream> (1)cin语句:cin> ...
- 问题 C: A+B Problem II
题目描述 I have a very simple problem for you. Given two integers A and B, your job is to calculate the ...