나는 다음과 같은 bash는 스크립트가 : 병합이 실패 할 경우,은 자식 재설정입니다 - 병합에 실패하면 필요합니까?
- 병합이 시작하기 전에이 상태로 돌아갈 자식 리셋을 어떻게해야합니까 :
git merge --squash -Xtheirs dev -m "squashing" && (./test/testsrc/shell/node-c.sh && echo "compiled successfully") || (git reset --hard; exit 1)
내가이 개 질문을 ?
- 1에 대한 대답이 "예"라고 가정하면, 위의 스크립트는 정확합니다. 즉, node-c.sh 스크립트가 0이 아닌 코드로 끝나면 git reset --hard가 호출되어 절대 종료됩니다 코드 = 1?
내가 자식 병합을 실행할 때 그 자식이 - 하드 리셋 때문에, 인덱스가 항상 상관없이 업데이트되지 않습니다 것을 생각하고 항상 옳은 일이다.
제쳐두고 병합이 작동하지 않는 나쁜 Git 버그가 나타나는 것을보고 있는데 .js 파일이 엉망이되어서 종종 "$ node -c"로 컴파일 할 수 없습니다. . 아무도 전에 이것을 보았는지 확신 할 수 없지만, Git에 버그 보고서를 제출했습니다.
_I는 버그 신고서를 제출했습니다. : 그리고 본질적으로'-Xtheirs'는 마법의 총알이 아니며, 반대로, 충분한 밧줄입니다 ... ;-) – j6t
@ j6t 당신은 절대적으로 옳습니다, 그것은 힘내 사람들이 나에게 말한 것입니다 :) 어쩌면 당신은 하하였습니다. TBH는 제가 본 실패율을 가지고 있습니다. -X는 내가 본 것보다 많이 경고해야합니다. 최소한 JavaScript 코드를 병합 할 때. –
'git reset --hard'보다는'git merge --abort'를 사용해야합니다. (그들은 당신의 경우에 대해 똑같은 일을하기는하지만, '병합 - 항아리'는 더 명확하고, 미래 보장적이다.)그것은 실패한 병합 부분입니다. "병합 취소"를 위해서 당신이하고있는 것처럼'git reset --hard ORIG_HEAD'를 사용하십시오. – torek