이 글은 다음을 참고하여 작성되었습니다. 🙇🏻♂️
프로젝트를 작업하면서 어려운 것 중 하나를 꼽으라면
작업 내용을 단위별로 정렬해서 브랜치에 기록하는 것이다.
커밋 메시지 컨벤션을 참고해서 읽기 좋은 커밋 메시지로 정렬된 브랜치 로그를 목표로 노력하고 있지만,
이미 푸시된 커밋을 뒤늦게 아주 살짝 고쳐야 한다는걸 알았을 때마다 정말 난감했다.
번거롭지만 미래의 동료들에게 좋은 동료가 되려면 협업 관리 도구를 엉망진창으로 만들지 않고, 동시에 같은 상황에서도 유연하게 대처할 수 있는 능력이 필요하다. 그리고 지금이 아니면 스스로 해결하는 경험을 기를 시간은 주어지지 않는다고 생각했다.
Git이 흐름을 관리하는 방법 : 로컬 저장소의 working directory -> 인덱스(staging area) -> HEAD(commit) 단계를 통해 작업, 준비, 등록 순서로 관리한다.
먼저 스테이지에 남아있는 파일들이 푸시 거부된 이유는
로컬 브랜치가 원격 브랜치보다 뒤에 있기 때문이라고 터미널이 알려줬다.
그래서 현재 브랜치를 여기로 재설정 -> 인텔리제이 Git 로그 확인결과 이상 없음을 확인하고 나서 스테이지를 확인했었다.
git status
..?? 그런데 내가 이동한 브랜치에서 생각한 파일이 아닌 다른 파일을 보여줘서 당황했고 잘못 접근했음을 직감했다.
그래서 로그를 읽고 add/rm, pull, rebase, merge 등등 다양한 삽질을 시도했다.
탐색에 지친 끝에 reset과 강제 푸시를 사용하면 해결할 수 있다는 블로그 정보에 이걸로 마무리할까.. 싶었지만
그 블로그 마지막 줄 주의점때문에 그러지 않았다.
강제 조작을 하더라도 같은 프로젝트를 하는 동료가 커밋하면,
충돌이 생기거나 내가 잘못 커밋한 파일들은 다시 등록된다는 것.
그리고 공식적으로도 권장하지 않는다는 걸 보고 좀 더 근본적으로 해결해야겠다는 고민 끝에 간단히 해결했다.
현재 브랜치를 여기로 재설정
로컬 브랜치가 리모트 브랜치보다 뒤에 있는지 반!드!시! 확인하기
git pull origin branchname
git status
드디어 내가 예상한 대로 푸시 전 파일명이 나왔다..
간단히 git commit --amend 명령어를 사용해서 커밋 메시지만 수정해주었다.
명령어 입력시 파일 편집기로 들어가는데, insert가 나올 때까지 읽기 전용으로 헷갈릴 수 있으니 다음과 같이 한 번에 작업할 수도 있다.
git commit --amend -m "메시지 내용"
이렇게 하면 한 번에 커밋 메시지만 편집해서 스테이지에 등록할 수 있다.
git push origin 브랜치명 또는 인텔리 제이 단축키 ⌘ + k 를 통해 푸시 가능하다.
문제를 직면할 때마다 다른 사람의 능력이나 결과(구글링 정보)에 의존하는 것보다 스스로 생각하고 검증하고 해결해내는 능력의 필요성을 다시 느낀다.
이게 정답인진 모르겠지만 자신만의 정답을 만들어가려는 자세를 자주 리마인드 할 필요가 있다. 장기적으로 그러한 태도가 거대한 차이를 만드는 것 같다.