我设置了一些git钩子来gulp在预提交上运行一些命令.我基本上跑jshint/ plato.我基本上想要绕过这两种情况:
plato gulp命令在源上运行分析并生成跟踪复杂性的/ reports /目录.如果我们在修补程序分支上执行此操作,则在将它们合并回开发时会导致合并冲突.这里足够的说话是简单的钩子:
#!/bin/sh
if git diff --cached --name-only --diff-filter=ACM | grep '.js$' >/dev/null 2>&1
then
git stash -q --keep-index
./node_modules/.bin/gulp jshint
RESULT=$?
git stash pop -q
[ $RESULT -ne 0 ] && exit 1
git stash -q --keep-index
./node_modules/.bin/gulp plato
git add report/
git stash pop -q
fi
exit 0
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果我在"报告"上有合并冲突,我解决了合并All conflicts fixed but you are still merging.,然后提交它再次运行分析并分阶段提交,当它提交时抛出一个错误:
/Users/Nix/work/project/.git/modules/somesubmodule/MERGE_HEAD'用于阅读:没有这样的文件或目录.
该目录确实存在,但没有合并头...
我是git的新手,并试图围绕分支的工作方式.根据文档git checkout
更新工作树中的文件以匹配索引或指定树中的版本.如果>没有给出路径,git checkout也会更新HEAD以将指定的分支设置为>当前分支.
所以据我所知,我工作的目录中的文件(我执行git init的文件)应该根据我所在的分支进行更改.我很困惑,因为当我在分支之间切换时不会发生这种情况.在切换分支之前我正在编辑的编辑存在于我切换到的分支中.我做错了什么或git checkout不能这样工作,我只是误解了文档?