这里讲的是使用 git ignore 时候的一种特殊情况
 
正常你在本地给项目添加了一些文件之后,一般都会自动全部跟踪,但是在这个时候你必须编辑一个ignore文件,把一些不需要跟踪到文件ignore掉
 
这些东西不是可以不ignore也可以ignore的,更是必须要ignore的:
  1. 它们可以不同步,因为它们是自动生成的,是根据你的代码生成的,而且每运行一次都会自动覆盖上次版本,它们是被动变化而且可以由你的代码生成
  2. 它们必须不同步,因为它们可能包括了编译或是编程环境信息,比如路径等不重要但是一定不一样的信息,这样势必每次即使没有修改也会造成冲突
 
只要在全部添加跟踪之前把需要ignore的文件ignore掉,就不会有其他问题
具体哪些文件需要ignore就不详细说了,根据项目类型的不同网上资源很多
 
这里以android项目为例讲一下没有在添加跟踪之前ignore相应文件的特殊情况该如何处理
android项目中的build文件是自动生成的文件,是在项目run或者rebuild之后就会全部自动生成,其中很多文件是带有各种路径信息的
 
一、在本地添加了跟踪(add之后)才编辑ignore文件
  1. 这种情况造成的结果非常简单,就是ignore文件失效,文件会继续被跟踪,被commit ,被push ,被 merge。。。
  2. 这时候要如何处理?非常简单,执行一句命令就好了,在本地cache中清空这些需要ignore的文件,至于本地cache是什么以及为什么叫这个名字这里不详细说,你只要知道其他它就指的是stage就好了
  3. 命令:git rm -r --cached xx(MPChartLib/build)
  4. (不过既然是清空stage,也就是说commit 也可以咯?没有试,下次有机会可以试一试)
 
二、在push到远程之后才编辑ignore文件
  1. 这种情况就稍微复杂一些,因为它涉及到git的合并原理
  2. 这种情况下即使你清空了本地,执行上面那条命令已经得到这个结果时“fatal: pathspec 'MPChartLib/build' did not match any files”,当你进行pull的时候,因为远程是仍然有这些文件的,而且关键是你的ignore动作不会当成最新操作,让远程的这些文件消失(不知道用push能不能行,但不能直接push因为可能有其他修改),所以当你pull的时候,它们会被一块pull下来,而你本地虽然ignore了,但是这些文件还是存在的,所以就可能会有两个结果:本地直接增加另一份ignore文件的拷贝;git 报文件合并冲突。实际使用中是报了文件合并冲突,见[1]
  3. 这个时候如何做呢,其实非常简单,就是在本地把build文件全部删除,然后再pull远程(注意这个操作成功的条件是刚才冲突的文件全部是build文件,如果有其他文件冲突,要先把它们的冲突解决),这次pull一定是能成功的,然后你再在本地删除刚pull的build文件,然后add commit push,ok,现在远程会把你的删除操作作为最新操作,并且删除掉远程的这个被ignore的文件
  4. 现在你重新生成build,再拉取远程也不会有问题了
 
 
 
1
error: The following untracked working tree files would be overwritten by merge:
    MPChartLib/build/intermediates/bundles/debug/classes.jar
    MPChartLib/build/intermediates/bundles/release/classes.jar
    MPChartLib/build/intermediates/incremental/mergeDebugAndroidTestAssets/merger.xml
    MPChartLib/build/intermediates/incremental/mergeDebugAndroidTestResources/merger.xml
    MPChartLib/build/intermediates/incremental/mergeDebugAndroidTestShaders/merger.xml
    MPChartLib/build/intermediates/incremental/mergeDebugAssets/merger.xml
    MPChartLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
    MPChartLib/build/intermediates/incremental/mergeDebugShaders/merger.xml
    MPChartLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml
    MPChartLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
    MPChartLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml
    MPChartLib/build/intermediates/incremental/packageDebugResources/merger.xml
    MPChartLib/build/intermediates/incremental/packageReleaseResources/merger.xml
    MPChartLib/build/intermediates/res/resources-debug-androidTest.ap_
    MPChartLib/build/outputs/aar/MPChartLib-debug.aar
    MPChartLib/build/outputs/aar/MPChartLib-release.aar
Please move or remove them before you can merge.
Aborting

git gitignore文件失效处理的更多相关文章

  1. Git .gitignore文件简介及使用

    Git .gitignore文件简介及使用 By:授客 QQ:1033553122 .gitignore 这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中.实际项目中,很多文件都是不需要版本 ...

  2. Git .gitignore文件忽略

    Git .gitignore文件忽略 学习了:http://blog.csdn.net/yonnangel/article/details/50115059 http://www.cnblogs.co ...

  3. Git .gitignore文件说明

    参见:https://book.git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E ...

  4. Git .gitignore文件的使用

    本文转载自 http://blog.csdn.net/xmyzlz/article/details/8592302 在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .giti ...

  5. git rm -r --cache命令 及 git .gitignore 文件

    git 的  .gitignore 文件的作用是在代码提交时自动忽略一个文件.不将其纳入版本控制系统. 比如.一般我们会忽略IDE自动生成的配置文件等. 如果一个你要忽略的文件已经纳入到了git ,也 ...

  6. Git - .gitignore文件的用法

    .gitignore文件的作用 .gitignore文件用来忽略被指定的文件或文件夹的改动,被记录在.gitignore文件里的文件或文件夹,是无法被git跟踪到的,换句话说,被忽略的文件是不会被放入 ...

  7. .gitignore文件失效的解决方案

    通常在idea中,我们使用git进行项目管理的时候,一些不需要的文件如.idea,.target文件不需要上传至gitlab仓库,这时,就需要在项目中定义一个.gitignore文件,用来标识这些文件 ...

  8. git .gitignore 文件 解决二进制文件冲突问题

    .gitignore  主要是添加 忽略文件 .最近团队开发经常出现 UserInterfaceState.xcuserstate 冲突,打开发现是二进制文件 ,没法解决冲突. 只好 rm -rf 之 ...

  9. git .gitignore 文件不起作用

    .gitignore 不起作用的原因是因为 git 有以前文件缓存,只要清理一次缓存即可 git rm -r --cached . // 然后再进行 git git add . git commit

随机推荐

  1. objective-c(类别)

    objective-c中的Categary(类别)使用相当广泛,其内涵类似于javascript中的prototype,可以扩展某一个类的方法. 下面给出一个基本的例子,参考oc程序设计一书: 实现一 ...

  2. Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

    框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...

  3. 来看看Windows9到底是什么

    今天有新闻一直在说windows 8.2 windows9,还给出了一张很有趣的图 我们就假设这张图是真的. 这张图透漏出两个信息 其一:开始菜单真的回来了. 不过还是不死心,绝不放弃开始屏,确实,开 ...

  4. [ZigBee] 13、ZigBee基础阶段性回顾与加深理解——用定时器1产生PWM来控制LED亮度(七色灯)

    引言:PWM对于很多软件工程师可能又熟悉又陌生,以PWM调节LED亮度为例,其本质是在每个周期都偷工减料一些,整体表现出LED欠压亮度不同的效果.像大家看到的七色彩灯其原理也类似,只是用3路PWM分别 ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明

    微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是 ...

  6. Git学习笔记(7)——多人协作

    本文主要记录了,多人协作时,产生冲突时的解决情况. 多人环境创建 首先我们需要模拟一个多人环境.前面的Git的学习都是在Ubuntu上面,现在我们也搭建一个win环境吧.安装win环境下的Git,很简 ...

  7. C++ 引用

    本文主要记录了C++中的引用特性,总结了一下代码示例和错误. 简单的引用 引用是C++的特性,指针是C语言的特性.上面代码结果如下: 20 20 100 20 true 引用和被引用的对象是占用同一个 ...

  8. 使用EntityFramework的烦恼

    我有一个应用程序,是实现数据ETL同步的,即把数据从一个db里抽取出来,经过处理后,存储到另一个db里. O/RM采用的是EF db First. 随着项目程序的开发,EF的不足越来越明显. ● 根据 ...

  9. Java中equals与==和comparaTo的区别

    一.先说说Java中equals和==的区别: Java中的数据类型,可分为两类: 1.基本数据类型(也叫原始数据类型) 八大基本数据类型 char byte short int long doubl ...

  10. 知方可补不足~row_number,rank,dense_rank,ntile排名函数的用法

    回到目录 这篇文章介绍SQL中4个很有意思的函数,我称它的行标函数,它们是row_number,rank,dense_rank和ntile,下面分别进行介绍. 一 row_number:它为数据表加一 ...