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来忽略这行修改,不提交。
解决方法:
- 在git根目录下创建名为
.gitattributes
的文件 - 在
.gitattributes
的文件增加如下内容:login.py filter=ignore
- 运行如下
➜ ~ git config --global filter.ignore.clean 'sed "s/PASSWORD = '123456'/PASSWORD = ''/g"'
- 修改
~/.gitconfig
文件的相应内容为:
[filter "ignore"]
clean = sed \"s/PASSWORD = '123456'/PASSWORD = ''/g\"
解释说明:
-
filter=ignore
中的ignore
为自己起的名字,可以随意起 - filter的名字
ignore
要一致:.gitattributes
的文件的filter=ignore
要与运行命令的filter.ignore.clean
要一致 -
'sed "s/PASSWORD = '123456'/PASSWORD = ''/g"'
为提交时要执行的操作,替换为你自己的操作 - 因为不知道shell是怎么转意
'
,所以多了手动修改~/.gitconfig
文件的第4步,如果能正确写出第3步的命令,就没必要运行第4步
网友评论