美文网首页
git知识点

git知识点

作者: 一吻江山 | 来源:发表于2018-07-24 07:55 被阅读13次

    001


    git bisect

    • git bisect run <yourtest.sh>
      git bisect可以用来找到引入破坏[bug, 编译不通过]的commit
      也可以找到引起状态改变的commit,比如某个文件第一次加入git
    # 用git bisect来查找加入functional_tests/list_page.py的commit
    # ab91389为版本库中第1个commit
    $ git bisect start --term-new=hasfile --term-old=nofile HEAD ab91389
    $ git bisect run ./somefile_first_add.sh  #当前目录为仓库根目录              
    $ git bisect reset   # quit the bisect session
    

    <yourtest.sh>的退出码:
    0:代表git bisect中的good/old
    1 - 127:代表git bisect中的bad/new,125除外
    其它值:取消bisect处理
    somefile_first_add.sh

    #!/bin/sh
    if [ -f "functional_tests/list_page.py" ]; then
        exit 1  #--term-new
    else
        exit 0  #--term-old
    fi
    

    https://git-scm.com/docs/git-bisect

    000


    忽略特定行

    login.py文件[已提交],代码如下

    # -- 账号 --
    LOGIN_NAME = 'zhoujie_903@163.com'
    PASSWORD = ''
    

    需求:在本地编写程序时,修改为PASSWORD = '123456',但提交时不想提交这行修改,怎么用git来忽略这行修改,不提交。

    解决方法:

    1. 在git根目录下创建名为.gitattributes的文件
    2. .gitattributes的文件增加如下内容:login.py filter=ignore
    3. 运行如下
    ➜  ~ git config --global filter.ignore.clean 'sed "s/PASSWORD = '123456'/PASSWORD = ''/g"'
    
    1. 修改~/.gitconfig文件的相应内容为:
    [filter "ignore"]
        clean = sed \"s/PASSWORD = '123456'/PASSWORD = ''/g\"
    

    解释说明:

    1. filter=ignore中的ignore为自己起的名字,可以随意起
    2. filter的名字ignore要一致:.gitattributes的文件的filter=ignore 要与运行命令的filter.ignore.clean 要一致
    3. 'sed "s/PASSWORD = '123456'/PASSWORD = ''/g"'为提交时要执行的操作,替换为你自己的操作
    4. 因为不知道shell是怎么转意',所以多了手动修改~/.gitconfig文件的第4步,如果能正确写出第3步的命令,就没必要运行第4步

    参考:
    Customizing Git - Git Attributes

    相关文章

      网友评论

          本文标题:git知识点

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