-
[what is?] git이 뭔가요?IT 지식 2020. 11. 15. 10:39728x90
코딩을 하다보면 내가 한 코딩에 대한 기록을 남겨야 할 필요성이 느껴지게 됩니다. 내가 어떤 작업을 했는지부터 시작하여, 내가 쓴 코딩을 다른 어딘가에 백업하고 싶다는 등의 느낌 말이죠. 이런 필요성은 혼자 할 때보다 협업을 하게 되면 더 크게 다가오게 되는데요, 오늘은 전세계 개발자들이 애용하는 코드 백업 툴이자 협업 툴인 git에 대해 알아보는 시간을 가져보도록 하겠습니다.
1. git? 처음 들어봐요.
깃(Git /ɡɪt)은 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있다.(from 위키백과)
git은 일종의 파일로그 추적 프로그램입니다. 우리가 git을 설치하고 실행하는 순간부터 git은 우리의 코드를 지켜보고 있습니다. 아주 사소한 엔터 하나부터 수많은 코드를 쓴 순간까지 모든 것을 놓치지 않고 기록하고 있습니다. 이 모든 기록들은 git의 working history에 저장되고 (예를 들어) vs code의 익스텐션등을 활용하면 우리의 코드에 어떤 변화가 생겼는지 확인할 수 있습니다.
2. 근데 git 은 왜 쓰나요?
git은 여러 개발자들이 협업하기 위한 목적으로 사용됩니다. 내가 로컬 컴퓨터에서 작업한 기록을 git에 남기고, git hub에 올리게 되면, 다른 개발자들이 git hub에 올라와 있는 로그와 코드 내려받아 하나의 프로젝트를 진행하게 되는 방식이죠. 그리고 git에는 commit 메세지라는 것이 존재해서 내가 한 작업에 대해 어떤 작업을 했는지 작업 내역을 남길 수도 있게 되어 있습니다. 이 커밋 로그를 통해 서로의 업무 상황이나 진행상황을 확인해볼 수 있습니다. 그리고 혹여나 실수로 그동한 한 작업이 날아가게 되어도 git 로그를 통해 그때 당시 내가 남겼던 작업 상황으로 되돌아가 내가 한 작업들을 되살릴 수도 있습니다.
여기서 말하는 git hub라는 것은 웹 사이트로, git으로 관리하는 코드들을 관리하는 웹 서버 겸 사이트입니다. 이 사이트에는 stackoverflow 만큼이나 많은 전세계 개발자들이 모여있는 곳입니다. nomad coder의 운영자인 니콜라스는 이 git과 git hub의 관계를 커피와 카페의 관계로 묘사하기도 했습니다.
지금 이 순간에도 git hub에서는 전세계 개발자들이 각자의 프로젝트를 공유하고 조언을 주고 받으며 기발한 프로젝트들을 진행하고 있습니다.
3. git으로 다른 사람의 코드를 내려 받으면 제 코드는 지워지는 거 아닌가요?
여기까지 들었다면 이런 생각이 드실 수도 있습니다.
'좋아, git이 많이 쓰인다는 것은 알겠어. 근데 다른 사람들의 코드를 내려받는다면, 내가 진행하고 있던 코드들 위에 덮어씌워지는 거니까 내 코드는 사라지는 거 아니야?'
저는 처음에 이렇게 생각했었거든요 ㅎㅎ;; 하지만 놀랍게도, 다른 사람의 코드를 내려받는다고 해서 내 코드가 사라지지 않습니다. git이 다른 사람의 코드를 내 코드 위에 다운받으면 git은 자동으로 기존에 있던 코드와 새로운 코드를 비교하여 다르게 쓰인 부분만을 적용해줍니다. 그래서 내가 쓴 코드와 다른 사람이 쓴 코드가 공존할 수 있도록 해줍니다. 그리고 만약 같은 파일명의, 같은 줄에 다른 코드가 쓰여 있다면, conflict 오류를 알려줍니다. 이 conflict 오류를 통해 해당 위치에 다른 코드가 쓰여있음을 알려주고 어떤 코드가 맞는지, 어떤 코드를 적용해야 하는지 사용자에게 물어보고 작업을 진행하도록 합니다. 이 기능이 다른 사람과의 협업을 가능하게 하는 아주 강력한 기능이라고 할 수 있습니다.
4. 마무리.
오늘은 전세계에서 가장 많이 쓰이는 협업 툴인 git에 대해 알아보았습니다. git은 다양한 기능을 가지고 있는만큼 주로 쓰이는 명령어들에 대해서는 한번 따로 정리할 필요가 있습니다. 이 부분에 대해서는 다음 시간에 정리를 하는 시간을 가지도록 하겠습니다.
초보 개발자분들은 git을 통해 다른 사람들과의 협업 능력도 기르고, 실력 좋은 분들의 코드도 구경하면서 자신들의 실력을 기르실 수 있었으면 좋겠습니다!!
728x90'IT 지식' 카테고리의 다른 글
[TIL] Day 32. export default의 의미에 대해 (0) 2020.11.17 [TIL] Day 31. git rebase 하는 법 (0) 2020.11.15 [what is?] react hooks 가 뭔가요? (0) 2020.11.08 [TIL] Day 30. SVG 파일에 대해서 (0) 2020.11.08 [What is?] 리덕스가 뭔가요? (0) 2020.11.01