次のbashスクリプトがあります:
git merge --squash -Xtheirs dev -m "squashing" &&
(./test/testsrc/shell/node-c.sh && echo "compiled successfully") || (git reset --hard; exit 1)
2 つの質問があります。
- マージが失敗した場合、マージ開始前の状態に戻すために git reset を実行する必要がありますか?
- 1 に対する答えが「はい」であると仮定すると、上記のスクリプトは正しく、node-c.sh スクリプトがゼロ以外のコードで終了した場合、その git reset --hard が呼び出され、コード = で完全に終了します。 1?
git merge を実行すると、インデックスは常に更新されるので、 git reset --hard は常に正しいことだと考えています。
余談ですが、Git の悪いバグのように見えるものを見ています。マージが機能せず、破損した .js ファイルが生成され、「$ node -c」でコンパイルすることさえできないことがよくあります。誰かがこれを以前に見たかどうかはわかりませんが、Git にバグレポートを提出しました。