[Spring_4기 본캠프] 1주차 - 팀프로젝트와 Git | Day 14
오늘은 본캠프가 시작된 지 이틀차이다. 첫 날 Git에서 나타난 몇 몇 문제가 있었는데
인터넷에 검색해도 안되던 게 팀원들과 같이 보면서 해결하니 금방 해결이 되었다.
1) 우선 첫 번 째로 나타난 문제는 git pull이 안되는 문제이다.
git pull origin branch, git pull origin master..등등 무슨 명령을 내려도 안되길래 어제 혼자 해결하려다 실패했었는데,
자세히 보니 파일의 경로가 틀려서 그런거였다! 역시 작은 것 하나에도 부서지는 연약한 코딩.. pwd로 현재 파일 경로를 항상 확인하자.
2) 두 번째로 나타난 문제는 파일을 수정하고나서 git push 가 안되는 문제이다.
파일 경로도 잘 확인했고 브랜치 명도 틀리지 않았는데 git pish가 안되어서 골머리를 앓고 있었는데 팀원들이 git add와 git commit을 실행한 후에 시도해보라고 해서 문제가 풀렸다. ctrl + S로 모두 저장이 되는 줄 알았는데 git push 전에는 꼭 add 와 commit을 진행하도록 하자.
User@DESKTOP-SQMNB33 MINGW64 ~/Desktop/project_week1/mini_psyworld (personal_html)
$ git add personal.html
User@DESKTOP-SQMNB33 MINGW64 ~/Desktop/project_week1/mini_psyworld (personal_html)
$ git commit -m "상세페이지 클래스이름 변경"
[personal_html a141d63] 상세페이지 클래스이름 변경
1 file changed, 38 insertions(+), 7 deletions(-)
User@DESKTOP-SQMNB33 MINGW64 ~/Desktop/project_week1/mini_psyworld (personal_html)
$ git push origin personal_html
Enumerating objects: 8, done.
Counting objects: 100% (8/8), done.
Delta compression using up to 12 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 1.89 KiB | 1.89 MiB/s, done.
Total 4 (delta 2), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/Revengersy/mini_psyworld/
557ed21..a141d63 personal_html -> personal_html
-> 팀원들과 본격적으로 프로젝트를 진행하면서 각자 맡은 부분을 수정해서 git push와 git pull을 자주 해보게 되었다. 하지만 진행하다보니
드는 하나의 의문, 이렇게 main에서 각자가 계속 수정을 하다보면 충돌이 일어나지 않을까? 하는 것이었다.
때마침 튜터님이 오셔서 이러한 의문에 대해서 질문을 드렸는데, 각자 맡은 부분의 파일을 따로 생성에서 관리하고, 특정한 때마다 branch 를 생성해 관리하면 된다는 것이었다. 물론 이것 또한 솔루션 중 하나이고 코딩에 정답은 없다는 아주 머리가 아픈 말도 덧붙이셨다. 그래서 personal_html이라고 branch를 새로 생성해보고 git push를 할 때에도 git push origin personal_html 이라는 명령어를 실행해 수정된 부분이 Git hub에 잘 반영이 되는 지도 알아봤다.
html파일과 css파일은 원래 따로 관리하는 것이 관례이며 index.html이 있다면 index.css 가 세트로 따라다니는 것도 새로 알게되었다.
웹개발 강의 때는 코드가 그렇게 길지 않아 간편하게 html 문서 내에 style태그로 css를 관리했는데, 따로 하다보니 익숙하지 않아 조금 불편했다. 하지만 프로젝트가 진행되면서 html과 css모두 복잡해지는 것을 보니까 한 파일에 모두 들어가있었으면 스크롤 하기 힘들었겠다는 생각이 들었다. 또한 다른 팀원이 작성한 코드를 내가 가져가서 수정하려고 했는데 잘 모르겠는 class가 많아서 조금 헷갈렸는데 튜터님이 주석을 적극적으로 활용하고 시작하기 앞서 기본 코드를 작성할 때 팀원들끼리 class의 이름을 미리 정해야 유지보수면에서 우수하다고 조언하셨다. 확실히 우리 팀의 코드를 보면 class나 id의 이름을 미리 정해놓지 않아 다른 팀원의 코드를 받아볼 때 뜻을 물어본다거나 개발자도구로 무엇을 가리키고 있는 지 검색을 해봐야 했다.
-> git pull을 하려다 마주한 엄청난 에러. 강의에서 봤던 conflict 에러였다. 처음에 봤을 때는 이게 대체 무슨 에러인가 싶고 막막했다.
천천히 뜯어보니 내가 수정한 라인에서 다른 팀원이 똑같은 자리에 코드를 수정을 해 난 에러였다. 여기서 상대방이 작성한 코드로 수정할 것인지 내가 작성한 코드로 수정할 것인 지 정할 수 있었다. 무척 편리한 기능이다. 잘못 삭제한 에러도 소스제어를 통해 과거로 돌아갈 수 있어서 매우 좋았다. Git을 계속 쓰다보니까 파일을 세부적으로 잘 나눠야 할 것 같다는 생각이 들었다. 같은 파일을 동시에 수정하니 conflict가 자주 일어났다.
Opinion
오늘은 본격적으로 팀원들과 git을 사용해 공유 작업을 해봤다. 충돌도 많았고 알 수 없는 에러도 떠서 전전긍긍했지만 결국에 잘 해결하고 완성본에 거의 가까워졌다. 기술적으로 지식이 많지 않아 팀에서 민폐가 되나 걱정이 많았는데 팀장님이 이것저것 해볼 수 있게 역할도 주시고 튜터님도 내 성장을 위해 아낌없는 조언을 해주셨다. 개발자로 살다보면 늘 벽에 부딪힌다고 한다. 나는 그 첫 번째 벽 앞에 서있고 그걸 부수느냐 돌아가느냐는 앞으로 내가 어떻게 하냐에 달렸다. 부족함이 많음을 부끄러워하지 말고 노력하지 않음을 부끄러워하자.
오늘도 수고했다!