스파르타 이노캠/본과정

2023. 06. 12 월 - Git과 Github사용

haema_ 2023. 6. 12. 20:04
728x90

지난 주 팀 미니 프로젝트 때 몰라서 사용하지 못했었던 git과 github를 사용해보았다.

미니 프로젝트 때 작업해서 이미 완성된 파일을 올리는 방법은 매우 간단해서 별다른 문제가 없었는데, 오늘 차 조 과제인 S.A. Github 과정에서 내가 Pull request한 파일이 충돌이 일어났었다.

 

 당시 상황 자체는 정확하게 기억이 안나지만, 아마 내가 작성하는 동안 조원 분이 한 번 pull request로 업데이트 했는데  이후 내가 pull하는 과정에서 뭔가 빠졌던 것 같다. 어쨌든 github에서 fork하고 있던 원격 스토리지의 파일에 갱신이 발생했을 때, 그 파일을 fetch로 가져와서 최신 파일을 merge하여 작업중인 파일과의 충돌을 확인 후 진행해야 한다. 과제 제출 자체는 Repository 관리자를 맡으신 팀장 분께서 관련 지식이 있으셔서 수정 후 무사히 제출을 완료했지만, 대충의 감만 잡힐 뿐 정확하게 어떤 방식으로 구동하는 지, 협업에서는 어떻게 활용하고 대처하는지에 대해서는 조금 더 공부가 필요할 것 같다.

 

 지금까지 이해한 방식은, 특정 시점에 fork하여 업데이트 및 기능 추가를 진행중이던 파일이 누군가의 pull request에 의해 먼저 갱신될 경우, fetch 진행 후 갱신된 파일을 merge하거나, Pull을 사용해서 내가 작업 중이던 내용과 새로운 파일에서 업데이트된 내용을 병합한 후에, 그 과정에서 충돌이나 문제가 없음을 확인 후 작성을 이어나가야 한다는 맥락인 것 같다. 협업 과정에서는 당연히 여러 기능 구현이 동시에 진행되는 경우가 많기 때문에, 충돌을 최소화하기 위해선 당연한 조치인 것 같기도 하다.

 처음 이 말을 이해했을 때는 '그럼 마지막으로 pull request를 진행하는 사람은 협업 중인 모든 사람들의 코드가 하나씩 업데이트 될 때마다 자신의 코드와 합치는 작업을 진행하게 될 수도 있다는 뜻인가?' 하는 생각이 들었다. 좀 더 찾아보니 특정 기간을 정해두고 한 번에 모든 사람들의 코드를 취합해서 다 같이 코드 리뷰하는 형식을 취하는 것 같기도 하다.


관련한 정보를 더 찾다보니, 내가 오해하는 부분이 있었다. 충돌이라는 개념은 단순히 '같은 내용이 담긴 줄' 을 동시에 수정했을 경우를 나타내는 것 같다. 따라서 충돌이 발생할 경우, 한 쪽의 수정사항을 없던 것으로 만듦으로서 해결할 수 있는 것이었다.

내가 생각하고 있던 충돌이라는 개념은 코드와 코드가 병합되는 과정에서, 예를 들면 같은 변수를 사용하는 곳이 있어서 코드 작동에 문제가 생긴다거나 실행 시 기능적인 측면에서 오류가 발생하는지를 판단해주는 거라고 오해하고 있었다. 충돌이 발생하지 않더라도 기능상의 오류는 당연히 발생할 수 있고, 그것은 협업자들이 직접 찾아내야 하는 영역인 거였다.

 

 

 

반응형