美文网首页
关于git过滤提交

关于git过滤提交

作者: jiluyixia | 来源:发表于2020-07-06 17:39 被阅读0次

    gitlab下载的公司代码,修改几个文件后,想提交,git status发现有几十个文件被修改了,很多都是build文件夹下的。
    在android studio 的version Control控制台,Local changes里也能看到这些修改的文件。
    重新在gitlab上拉代码下来,用户android studio打开,在没有做任何修改的情况下,git status都有很多文件被修改了。
    在下载下来的代码下,发现了build文件夹被上一个人提交了。
    如果只选择自己修改的文件提交,这样十分麻烦。
    在网上寻找方法,如何过滤提交。
    发现一般有两种方法。
    方法一:
    在setting->version control->ignored files下添加过滤条件。
    设置里修改ignored files

    方法二:
    在项目根目录下,加一个.gitignore文件,里面写上过滤条件。
    项目根目录创建.gitignore文件

    试了方法一,发现在Local changes里,那些build文件修改问题还是存在,没法解决问题。
    于是搜了一下“android studio ignored files无效”,网上基本都说需要git rm -r --cached .清除缓存。
    对于Android Studio 设置忽略build目录后仍然无效的问题

    抱着试一试的态度,执行了这个命令。
    结果控制台上一长串的rm文件,还以为文件都被删掉了。惊呆了。。。所有文件变为红色。
    在网上看了一下,这个命令并不是物理删除文件,只是把所有文件的git追踪给取消了。现在大家都是新文件了。。。
    git rm -r --cached解决已提交的文件在.gitignore中加入忽略后无效的问题

    在乙方那边提交的代码上可以看到,他们git上并没有提交build文件夹,而且他们的根目录上有一个.gitignore文件。
    感觉用.gitignore文件来过滤比较好,用setting->version control->ignored files的方法,重新开一个android studio窗口,还得重新设置,太麻烦了。
    于是从乙方的代码里,把这个文件copy过来,放在我们的这边根目录。

    参考
    git rm -r --cached解决已提交的文件在.gitignore中加入忽略后无效的问题
    里有一句话,.gitignore只会过滤没被git追踪的文件。
    以及
    Android Studio git添加.gitignore文件无效

    所以现在可以执行下面两句命令了:
    git add .
    git commit -m ‘update .gitignore’
    在提交信息上会发现,所有文件都被delete,但是add里面,重新加了所有文件。(猜测这个add里面,应该不包括过滤的文件了)
    然后再git push。
    去gitlab上看提交记录,最终结果是你修改的部分被提交了,而且,所有需要过滤的文件(比喻build文件夹)都被删除了。完美。

    再次下载这个项目来验证,下载下来的文件已经不带build文件夹了,修改java文件,git status和Local changes里也只有你自己修改的文件了,整个世界都清净了啊。。。。

    所以这个.gitignore文件最好在一开始就加进去,开发到一半加进去,就是这么麻烦。。。

    总结:
    git rm -r --cached .
    git add .
    git commit -m "xx"
    git push

    另外,在提交的时候,报出remote: GitLab: You are not allowed to push code to protected branches on this project.是因为权限不够。

    参考资料Android Studio git添加.gitignore文件无效

    相关文章

      网友评论

          本文标题:关于git过滤提交

          本文链接:https://www.haomeiwen.com/subject/bhhgqktx.html