zoukankan      html  css  js  c++  java
  • git gitignore文件失效处理

    这里讲的是使用 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
  • 相关阅读:
    VUE常用传值方式、父传子、子传父、非父子组件传值
    ios10中禁止用户缩放页面
    TCP MSS
    C++11 之 override
    unordered_set
    c++Lambda
    QUIC实现代码分析
    C++11新特性之十:enable_shared_from_this
    c++11 atomic
    How to Write a QUIC Endpoint Program
  • 原文地址:https://www.cnblogs.com/bellkosmos/p/5780349.html
Copyright © 2011-2022 走看看