提交后Git预提交挂钩添加文件

时间:2017-02-27 22:36:10

标签: mysql git githooks pre-commit-hook

我正在尝试转储mysql数据库并使用预提交挂钩将.sql转储文件添加到暂存区域,以便它可以包含在提交中(在Windows Server 2012 R2 / IIS上)。以下代码很好地转储数据库,但是在我提交之后它仍然在暂存区域中显示be.sql文件...有时(?) - 它似乎是将文件添加到暂存后提交(?)。这是一个预提交钩子,所以我不知道为什么它可能会在提交后添加文件:

#!/bin/bash

# Dump Database
/c/Program\ Files\ \(x86\)/MySQL/MySQL\ Server\ 5\.7/bin/mysqldump.exe -u root --skip-extended-insert be > /c/inetpub/wwwroot/directory/be/be.sql

# Add Database
cd /c/inetpub/wwwroot/directory/be
git add be.sql

行为有点奇怪 - 我会看到be.sql仍然在暂存区域,所以我将进行提交。如果我后来git状态树是干净的。如果我再次提交并且git状态,它将在登台索引中显示be.sql文件为已修改(我没有修改它)。它来回走动。我只是希望它转储.sql文件,将.sql文件添加到登台索引,然后提交,以便每次登台索引都是干净的。关于为什么会发生这种情况的任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用:

git commit -m "Message" --allow-empty

进行提交似乎有效。似乎git需要其他阶段性更改才能使钩子工作。所以它基本上没有进行提交,但仍然转储be.sql文件,然后由于日期发生了变化,它将在下次修改时显示在分段索引中。为了允许提交完全通过而不管是否存在其他阶段性更改,我使用了--allow-empty选项,该选项允许在阶段索引中没有任何提交。