- git pull ,commit
- gitignore 의 정체
- git - pull request?
- git // github & gitlab
현재 , 인턴 업무를 진행하면서 느끼고 있는 부분 중 하나는 코드를 짜는 것도 짜는 것이지만, 추후에 배포를 하기 위해 코드를 정리할떄가 아직도 어려움이 느껴졌다.
이유는, 제대로된 실무 환경에서 협업이 처음이다보니 , 내가 짠 코드, 다른 분들이 짜신 코드를 합쳐야되는 상황에서 익숙치 않아서였던 것 같다.
예시로, 사수님께서 "준보님, task완료한거같으니 이제 코드 최신화 하고 코드 정리하시면 될거 같아요." 라고 말씀하시면, 이제 떨리기 시작했다.
정말 익숙치 않았다.
그래도 해야되는 방법들을 배웠고 , 이를 이용해서 배포를 하곤 했다.
하지만 항상 난관 또는 아픈 손가락이였던 부분이 있었다. 그 부분에 대해서 오늘 어느정도 해결이 된거 같아 git에 관련된 부분을 적어놓으려 한다.
이제, 첫 배포를 하는 시기에 배웠던 방법은
push 를 할 새로운 branch 생성
git pull " 본 브랜치 "
git commit
git push
이런식의 흐름이었다.
이렇게 하였을때, 별 이상이 없다면 잘 되었다.
fe,be 둘다 !.
하지만, 본 테스크들이 주어지고 나서 작업을 시작했을떄부터 답답함이 시작되었다.
이유는 , 위 흐름되로 하였는데, BE에서 계속 pull이 안받아지고 충돌이 일어나는 것이었다.
그러한 경우 처음에는, 배포를 그날까지 해야했어서 고쳤던 코드를 다른 파일로 옮겨놓은뒤 pull을 받고 수동적으로 덮어씌웠다.
지금 생각해보면, 이것은 내가 짠 코드가 짧고 복잡하지 않았기에 가능했던 작업이라고 생각한다.
하지만, 이런식으로 하면서 그날의 배포는 잘 해결되었으나 , 한편으로 계속 신경이 쓰였다.
'과연, 다음에 또 이러면 또 이렇게 해야되는건가,,? 아,,' 이러한 감정이었다.
그러한 상황, 금일 또 일어난 것이다.
배포 당일은 아니였으나, 여유가 생겨 코드 최신화를 하던 중 똑같은 오류를 맞이했다.
도저히, pull을 성공시키기 위해 , 지금껏 짠 코드를 다시 다른 파일에 수동으로 옮기고 pull받은 후 , 다시 덮어 씌우는 방법은 아니란 생각이 들었다.
그래서, 선임분께 방법을 요청드렸다.
"선배님 , 작업방식 관련해서 여쭤보아도 괜찮을가요?"
"물론이죠"
그렇게, 나는 노트북을 들고가 vscode를 보여드리며 답답함을 설명해드렸다.
그 과정속 , 스스로 이해하게 된 것은
이러한 오류가 생기는 이유는 , 내가 작업한 코드의 파일이 현재 pull을 받아야하는 branch의 파일에서도 작업이 이루어졌기 떄문이었다.
즉, 기존에 위 방식으로 하였을때 이러한 오류를 마주하지 않았던 이유는
BE 에서는, 내가 작업한 파일이 주요 파일이 아니었어서, 충돌할 부분이 없었던 것이며,
FE 에서는 , 보통 component방식으로 독자적으로 작업을 하는 방식이기에 서로 건드리는 부분이 없어서 이러한 오류가 안생겼던 것이었다.
그러면, 어떻게 해야 되는 걸까?
일단, 선배님께서 하신다는 방식은 이거였다.
기존에 작업한 코드를 올리려는 branch에 작업한 코드를 commit을 시켜놓자. ex)temp
pull을 받아야하는 브랜치로 이동 후 pull을 받자.
그 후, git cherry-pick -n "" 을 사용하여 가지고 와서 덮어씌워주자
git graph를 볼줄 아는 법도 꽤나 중요해보였다.
결국은, git branch를 왔다 갔다 하며, 나의 작업본을 다른 분의 작업본과 충돌없이 관리하는 방법이라는 생각이 들었다.

무엇인지 몰랐다.
사실, 알려고 안했을 수 도 있다. 내가 작업하는 파일이 아니었기에.
하지만, 매우 중요했다.
git에서는 내가 github 또는 gitlab에 작업한 파일을 올릴때, 두가지로 나뉜다.
이때 필요한 것이 gitignore이다. 여기에 적혀있는 파일들은 push가 되지 않는다.
예로, .pyc파일 같은 것, 대용량 이미지, 커맨드 창, 중요한 정보 - 비밀번호 같은 것들은 웹에 올리면 안되니, 여기에 설정을 해놓는 것이다.
배포는 , 어떤식으로 되는걸까?
github와 같은 곳에서는 여러명의 코드를 관리하는 것이고, 실제로 운영되는 코드가 담겨있는 branch또한 있다.
그렇기에, 함부로 main branch에 나의 코드를 병합하면 안되는 것이다.
나에게 배포를 하기전, 새로운 branch를 판 뒤, 그곳에 너가 작업한 것을 넣은 후 올리라는 이유가 이거였다.
배포가 되는 곳을 관리하는 사람이 있을수도, 아니면 꼭 여러명의 승인이 필요할 수도 있다.
쉽게 말해서, 작업한 코드를 마지막에 승인을 하는 최종 관리자가 필요하다.
이떄, 저 작업했습니다. 확인해주세요 ! 라는 것의 역할이
pull request
인것이다.
push 로 올린 후 , 나의 브랜치를 확인해달라고 하는 것이 pull request인 것이다.
이걸로, 관리자는 확인을 하게 되는 것이다.
git은 코드를 관리하는 곳이고,
서비스는 혼자서 하는 것이 아닌 여러명이서 하는 것이기에 관리하는 곳이 github와 gitlab이라고 하는 것이다.
번외
# git merge
Updating e4ea95d..f5ebfb7
error: Your local changes to the following files would be overwritten by merge:
소스~
Please commit your changes or stash them before you merge.
Aborting
# git merge commit
merge: commit - not something we can merge
우선적으로, git 에서 pull ,push등과 같은 작업을 하기 위해서는, 내가 작업한 것에 대해서
"봉투" 형식으로 전달 될 수 있는 상태를 만들어 놓는 것이 중요하다.
그 방법이 "commit"인거다.