비전공자고 IT회사도 아니지만 회사 필요에 의해 깃헙갤에서 말 많은 C#으로 코딩하고 있고
IDE는 Visual Studio 2022, Git 도구는 Sourcetree 쓰고 있음
이번에 기존 프로그램 하나를 수정하는데, 나보다는 프로그래밍 짬 많은 동료 한 명이랑 하고 있음
기존 프로그램 있던 GitLab (GitHub은 아니네 ㅋㅋ) Repo에서 로컬로 Clone해왔고
기존 프로그램의 원래 브랜치를 A라 하면 동료가 A_1, 내가 A_2 브랜치에서 작업했음
어제까진 나는 동료의 수정사항은 신경 안 쓰고 내가 고칠 것만 고친 후에 A_2브랜치에 내 수정사항 push 하면
동료가 내 수정사항이랑 자기 수정사항을 같이 반영했음 (어제까진 branch merge는 아니었음, pull로 가져갔나?),
근데 오늘 동료가 본인의 A_1 브랜치에 내 A_2를 merge하고 나서 오늘부터 출장 나갔고 (그래서 동료한테 질문 못했고 깃갤에 하는거),
나는 merge 이후의 A_1 브랜치 내용을 pull해서 거기서부터 추가 수정을 해야 되는 상황임
그런데 A_1의 merge시점 브랜치 포인터를 선택하고 pull 눌렀는데 (원격 브랜치도 A_1로 설정함),
ㅅㅂ pull이 안 되더라??
에러메시지가 아마 'Please commit your changes or stash them' 였던 것 같음
질문1) 내가 merge 직전 push할 때, 그 전 push 대비 파일 3개 수정된 것 중 2개만 commit 및 push하긴 했었는데
(나머지 1개는 마이너한 거라), 혹시 commit 및 push 안했던 1개 파일 때문에 에러 떴던 건가? 그러면 어케 하는 게 정석임?
잠깐 멘붕할뻔했지만, merge 직전 push할 때의 A_2 브랜치 포인터로 되돌리기였나 써서 어케어케 하니
어떻게든 pull이 되긴 했음.
그런데 Visual Studio로 로컬 다시 열어보니까, ㅅㅂ 동료가 해 놓은 수정사항이 전혀 안 보이더라?
그냥 내가 로컬에서 내 꺼 수정하고 push 할 때의 코드가 그대로 보임...
이게 뭔가 싶었는데, 자세히 보니 화면 왼쪽에 코드 줄번호랑 코드 사이에 파란색/ 빨간색 표시 (변경내용)가 여러 개 있길래
그거 클릭해보니까, 그제야 동료가 해 놓은 수정사항이 보이더라.
그리고 '변경 내용 실행 취소' 였나?를 누르니까 그 부분에서 동료가 해 놓은 수정사항이 반영되던데,
문제는 내가 일괄적용하는 방법을 모르는 빡대가리라, 변경내용을 하나하나 다 찾아서 실행 취소를 눌러야 됐음 ㅅㅂ
어떻게든 다 찾아서 실행취소 눌러서 동료 수정사항 반영하고 내가 고칠 부분도 고쳐서 A_2에 push까지 하고 퇴근하긴 했는데...
질문2) pull 했는데 Visual Studio에서 동료 수정사항 안 보이는거, 이거 원래 그런거임?
그리고 pull 대상 브랜치의 수정사항을 일괄적으로 내 로컬에 반영하려면 무슨 기능 써야 됨?
쓰고보니 ㅈㄴ ㅈ밥같아서 맘이 아프다... 형아들 도와줘
그냥 작업 사항이 ide에 저장 안된 상태로 캐싱되잇고 실제 파일은 불러와진거같은데
1. 에러메세지 읽어봐. 변경사항 없애라잖아. 변경 사항 들고 있는 상태에서 pull 안되니까 깨끗히 하고 pull하면 됨 2. 현재 git status를 봐봐. 변경사항 남은 상태로 pull 되었거나 그랬을듯. 3. gpt한테 물어봐
질문 1 이전 상황은 어떤 상황이냐면. 깃랩은 기본 정책이 머지된 브랜치는 삭제하는게 기본임.
그래서 저 상황에서 해야 하는건 A2의 변경된 내용 업데이트임. A1을 A2로 합병했으니 A2를 업데이트하면 A1 내용이 반영됨.
질문 1은 깃 자체의 변경 내용 기록 때문에 브랜치 변경은 커밋 전 까지 허용되지 않음. 커밋을 해야 코드 작성분이 기록되고 remote로 push 및 pull 할때 로컬 변경사항에 대한 커밋을 강제함.
질문 2는 애매한데 아마 오늘 동료가 A1기록 다시 복구해서 A2에 넣거나 A1에 넣거나 할 듯 ㅋㅋ;; 깃랩은 깃헙 엔터프라이즈처럼 브랜치 네트워크 그래프 있으니 잘 보세요.