← 04 TRACE무엇을 남겼는가
목록을 자르고 판단해서 잘못된 원격에 push 했다
head -2로 원격 목록을 잘라 보고 첫 항목을 대상이라 단정했다. 되돌리기 어려운 대상은 전체를 본다.
어떤 모노레포에 원격이 4개 걸려 있었다. 목록을 이렇게 봤다.
git remote -v | head -2
첫 항목을 대상이라 단정하고 push 했다. 주 원격은 다른 곳이었다.
원인
목록을 잘라 놓고 판단한 것. 원격이 몇 개인지 모르는 상태에서 두 줄만 보고 "이게 그거겠지"로 넘어갔다.
피해는 없었다. 이미 있던 브랜치의 fast-forward라 덮어쓰기도 분기도 없었고, 세 곳의 SHA가 같아 정합은 유지됐다. 운이 좋았다는 뜻이지 판단이 옳았다는 뜻은 아니다.
바꾼 것
원격과 브랜치처럼 되돌리기 어려운 대상은 목록 전체를 보고 확정한다.
head도 grep도 붙이지 않는다. 네 줄을 다 읽는 데 드는 시간이,
잘못된 곳에 push 한 뒤 확인하는 시간보다 짧다.
딸려 나온 것
그 브랜치의 upstream이 원격이 아니라 로컬 master로 걸려 있었다.
그래서 git status의 ahead/behind는 원격과 아무 상관 없는 숫자였고,
인수 없는 git push는 의도와 다르게 동작할 수 있는 상태였다.
읽고 있던 숫자가 내가 생각한 것을 가리키지 않고 있었다는 점에서, 원인은 위와 같다.
githabit