Git 自动跟踪某些文件

Git 自动跟踪某些文件,git,pre-commit-hook,Git,Pre Commit Hook,长话短说:我们正在使用Jupyter笔记本.ipynb文件,并且已经设置了Jupyter配置来保存.py副本,以实现更好的git差异 因此,每次我保存一个.ipynb文件时,它都会保存一个.py版本,其他文件名都相同。如果不存在.py版本,它将创建一个新版本 是否可以自动添加/跟踪这些新创建的.py文件,或者在git配置中添加一些内容 编辑 因此,在阅读了git预提交钩子之后,使用git预提交钩子是可能的。然而,我真的不知道如何从头开始编写一个钩子 要重申我想要的:我保存foo_bar.ipyn

长话短说:我们正在使用Jupyter笔记本.ipynb文件,并且已经设置了Jupyter配置来保存.py副本,以实现更好的git差异

因此,每次我保存一个.ipynb文件时,它都会保存一个.py版本,其他文件名都相同。如果不存在.py版本,它将创建一个新版本

是否可以自动添加/跟踪这些新创建的.py文件,或者在git配置中添加一些内容

编辑 因此,在阅读了git预提交钩子之后,使用git预提交钩子是可能的。然而,我真的不知道如何从头开始编写一个钩子


要重申我想要的:我保存foo_bar.ipynb,自动创建foo_bar.py。如果我这样做,我希望预提交钩子添加foo_bar.py,例如git commit-a。要强调的是,我不希望它添加任何旧的.py文件,只希望那些文件名与现有的.ipynb文件相同的文件。

编写一个脚本,将新的和更新的文件添加到Git中,然后提交它们。手动运行或作为cron作业运行。更好的方法是,将它挂接到生成文件的工具中,如果可能的话,在工具每次保存文件或退出时运行

脚本可以简单到:

更改目录 cd/path/to/the/directory/where/the/py/files/are/save 当需要提交时,将其设置为1 提交=0 检查所有的.ipynb文件 对于*.ipynb中的i;做 生成相应的.py文件的名称 p=${i/.ipybn}.py 如果.py文件存在 如果[-f$p];然后 加上承诺;如果不修改它,它不会受伤 吉特加$p 记住,我们必须在最后作出承诺 提交=1 fi 完成 避免在什么都没有暂存的情况下运行git commit if[$commit-eq 1];然后 提交,生成一条唯一的、不是很有用的提交消息。 git提交-m在$date+%Y-%m-%d%H时自动提交:%I:%S fi 上面的代码假设所有.ipynb文件都存储在一个目录中,没有子目录,相应的.py文件存储在同一目录中

如果.ipynb文件存储在多个目录中,则将for行替换为:

for i in $(find . -name \*.ipynb); do
如果.py文件与相应的.ipybn文件不存储在同一目录中,则必须更改行p=${i//.ipybn}.py


在转移文件之前,可以验证多个条件。

可能重复或为了运行预提交挂钩,首先必须提交。git添加。git提交之前应该足够了。@axiac我不想添加任何旧的.py文件,只想添加那些与现有的.ipynb文件具有相同文件名的文件。无论您想添加什么,git本身都不会做任何事情。预提交挂钩作为git提交命令的一部分运行。必须有人或脚本运行此命令。同一个人或脚本可以在运行git commit之前添加适当的文件。对于这样一个简单的任务,不需要挂钩。更重要的是,没有提交,我认为如果没有提交任何内容,钩子也不会运行。