这个问题是关于将git与
nbstripout
因此,回购配置首先是:
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@github.com:stas00/fastai_v1.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[include]
path = ../.gitconfig
$ cat .gitconfig
[filter "nbstripout"]
clean = nbstripout
smudge = cat
required = true
[diff "ipynb"]
textconv = nbstripout -t
$ cat .gitattributes
*.ipynb filter=nbstripout
*.ipynb diff=ipynb
git diff
git commit
笔记本通过一个过滤器运行,该过滤器删除本地的json字段(如cell的
execution_count
现在考虑一个正常的情况,同一个笔记本在上游和本地发生变化。尝试将本地回购与上游同步失败:
$ git pull origin master
From github.com:stas00/fastai_v1
* branch master -> FETCH_HEAD
Updating 1ea49ad..ae0ba93
error: Your local changes to the following files would be overwritten by merge:
dev_nb/004_callbacks.ipynb
Please commit your changes or stash them before you merge.
Aborting
$ git diff dev_nb/004_callbacks.ipynb | wc -l
60
$ git stash
Saved working directory and index state WIP on pull-merge: 1ea49ad Console progress bar
$ git diff dev_nb/004_callbacks.ipynb | wc -l
0
$ git pull origin master
From github.com:stas00/fastai_v1
* branch master -> FETCH_HEAD
Updating 1ea49ad..ae0ba93
error: Your local changes to the following files would be overwritten by merge:
dev_nb/004_callbacks.ipynb
Please commit your changes or stash them before you merge.
Aborting
这不应该发生,因为
git stash
暂存
也可以通过一个过滤器运行,它只保存通过nbstripout过滤器显示的更改。所以也许
暂存
不完全使文件处于预修改状态吗?但是,在我禁用过滤器之后
不显示任何内容(禁用前也不显示)。
换句话说,为什么
git pull
看到潜在的冲突并且不会合并,即使
差异比较
显示不存在本地更改(但它们确实存在,它们只是通过过滤器去除的更改)。
至少我想
差异比较
以显示禁用条带输出筛选器后所做的更改。
使
git stash; gist pull
工作我必须在运行前禁用过滤器
暂存
.
$ nbstripout --uninstall
$ git stash
Saved working directory and index state WIP on pull-merge: 1ea49ad Console progress bar
$ git pull origin master
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (1/1), done.
remote: Total 3 (delta 2), reused 3 (delta 2), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:stas00/fastai_v1
* branch master -> FETCH_HEAD
1ea49ad..ae0ba93 master -> origin/master
Updating 1ea49ad..ae0ba93
Fast-forward
dev_nb/004_callbacks.ipynb | 1268 ----------------------------------------------------------------------------------------------------------------------------------------
1 file changed, 1268 deletions(-)
现在我必须记住重新启用过滤器:
$ nbstripout --install
是否有一个更好的工作流不需要禁用/启用筛选器就可以工作?