我有以下 bash 脚本:
git merge --squash -Xtheirs dev -m "squashing" &&
(./test/testsrc/shell/node-c.sh && echo "compiled successfully") || (git reset --hard; exit 1)
我有两个问题:
- 如果合并失败,是否需要执行 git reset 才能恢复到合并开始之前的状态?
- 假设 1 的答案是“是”,那么上面的脚本是否正确,这样如果 node-c.sh 脚本以非零代码退出,则 git reset --hard 将被调用并且绝对会以 code = 退出1?
我在想,在运行 git merge 时,无论如何都会更新索引,因此 git reset --hard 始终是正确的做法。
顺便说一句,我看到似乎是一些糟糕的 Git 错误,其中合并不起作用并生成 .js 文件,这些文件会被破坏,而且通常甚至无法通过使用“$ node -c”进行编译。不确定是否有人以前见过这个,但我已经向 Git 提交了错误报告。