美文网首页
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