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: ...
随机推荐
- 洛谷 P4555 [国家集训队]最长双回文串
链接: P4555 题意: 在字符串 \(S\) 中找出两个相邻非空回文串,并使它们长度之和最大. 分析: 直接使用马拉车算法求出每个点扩展的回文串.如果枚举两个回文串显然会超时,我们考虑切割一个长串 ...
- STM32程序异常——中断处理要谨慎
问题背景 最近有一个新项目(车载项目),板子上除了原来的ARM + STM32F030K6Tx又多了一个8bit的mcu的单片机,这可真是嵌入式全家福了. 系统的主要核心工作是由arm来完成,但是在开 ...
- single-number leetcode C++
Given an array of integers, every element appears twice except for one. Find that single one. Note: ...
- 精心整理Java微服务最全面试题集(含答案)
微服务架构相关 大型网站架构演变过程 网站架构演变演变过程 传统架构 → 分布式架构 → SOA架构 → 微服务架构 什么是分布式架构 分布式架构就是将传统结构按照模块进行拆分,不同的人负责不同的模块 ...
- python中的itertools模块简单使用
itertools 高效循环下创建循环器的标准库 Infinite itertools,无限迭代器 itertools.count(start=0, step=10) 默认返回一个从0开始,依次+10 ...
- Spring Cloud Alibaba 使用Feign进行服务消费
为什么使用Feign? Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样.你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做. 使用Fei ...
- win10+MX350显卡+CUDA10.2+PyTorch 安装过程记录 深度学习环境配置
https://blog.csdn.net/m0_37867091/article/details/105788637
- springboot注解之容器功能
添加组件 @Configuration.@Bean //以swagger为例 @Configuration(proxyBeanMethods = false) @EnableSwagger2 //使用 ...
- Java多线程 | 02 | 线程同步机制
同步机制简介 线程同步机制是一套用于协调线程之间的数据访问的机制.该机制可以保障线程安全.Java平台提供的线程同步机制包括: 锁,volatile关键字,final关键字,static关键字,以 ...
- PTA二叉搜索树的操作集 (30分)
PTA二叉搜索树的操作集 (30分) 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTr ...