이번 글에서는 최근에 유노코딩 YOUTUBE "깃과 깃허브가 처음인 당신에게" 콘텐츠 총 8강을 다 들어서, 본 강의에서 배운 내용에 대해 복습을 해보고자 합니다.
챗GPT가 말하길, 깃(git)은 분산 버전 관리 시스템(DVCS, Distributed Version Control System)으로, 주로 소스 코드의 버전을 관리하고(코드의 이전 상태로 돌아갈 수 있음), 개발 협업을 돕기 위해 사용(여러 개발자가 같은 코드베이스에서 작업)된다고 합니다.
Window 유저의 경우, 아래 사이트에서 Git을 다운 받으시면 되고, 맥OS 유저도 본 홈페이지를 둘러보다보면 Git 다운을 받을 수 있는 버튼이 있을 겁니다.
참고로 지금부터 설명드릴 내용은 앞서 소개한 유튜브 학습 내용 중 윈도우 유저를 대상으로 한 내용에 한정지어 소개할 예정인지라, 맥OS의 경우엔 유튜브 내용을 참고하시면 되겠습니다.
사실 제 글을 보기보단 위의 유튜브를 보는게 더 유익할거라 생각합니다.
암튼 그렇게 다운로드를 받고, 이제 작업을 할 파일을 만들어주겠습니다. 저는 배경화면에 'gitfirst'라는 파일을 만든 후 하위 파일로 'git_practice'을 만들었습니다. 해당 파일에 오른쪽 클릭 후 '추가 옵션 표시'를 누르고, 아래 밑줄한 'Open Git Bash here'을 눌러줍니다.
누르고 나면 이런 아래와 같은 검정색 화면이 등장할 겁니다.
강의에서는 먼저 git에서 사용자의 '이름'과 '메일 주소'를 설정하는 깃 명령어를 알려주었는데요, 각각 다음과 같습니다.
$ git config --global user.name "사용자명"
$ git config --global user.email "이메일 주소"
저는 사용자명 'TKM', 이메일 주소 "tkm1214@naver.com"으로 설정해보겠습니다.
이제 제대로 입력되었는지 확인해볼텐데, 다음과 같은 명령어를 입력하면 됩니다.
$ git config user.name
$ git config user.email
중간엔 오타니 무시해주시면 되겠습니다. 이렇게 입력하고 나면, 어떤 사용자가 어떤 작업을 하고 있는지 나중에 확인하기 편하다고 하네요.
이제 본격적으로 작업을 해보고자 하는데, 그전에 '$ git init"이라는 명령어를 먼저 입력해주어야 한다고 합니다. 그 이유는 챗GPT가 다음과 같이 말해줍니다.
즉, git init 명령어를 통해 해당 디렉토리를 관리하겠다고 선언을 해주어 변경 사항을 저장소에 기록하고, 나중에 원격 저장소(ex. GitHub)와 연결할 수 있도록 하는 것입니다.
강의 교안에서는 $ git init을 "터미널이 열려있는 폴더를 깃 저장소로 초기화하는 깃 명령어"라고 소개하네요. 아 참고로 강의 교안은 유튜버께서 무료로 공유해주셔서 강의 유튜브 영상 소개란에서 다운 받을 수 있으니 참고바랍니다.
입력을 하려고 했는데, 터미널(깃 배시)이 많이 지저분해보입니다.
이때 '$ clear' 명령어를 쓰면 터미널을 클리어할 수 있습니다. 최근에 잠깐 리눅스를 공부했었는데 관련 명령어들이 git에도 적용이 되는 것 같습니다.
clear를 입력하고 나면 아래와 같이 청소가 됩니다.
이제 $ git init을 입력하여 디렉토리를 관리하겠다고 선언해보겠습니다.
보니까 '.git'이란 디렉토리가 만들어진 것 같은데, 폴더 내에 있는 항목들을 나열하는 $ ls 명령어로 디렉토리가 만들어졌는지 확인해보겠습니다.
이렇게 아무것도 안뜨는 게 정상이죠. 왜냐하면 '.git'은 그냥 디렉토리가 아니라 '숨김 디렉토리'이기 때문입니다. git_pratice에 들어가도 아무것도 안보일텐데, 아래처럼 '보기 > 표시 > 숨김 항목'을 클릭하면 그제서야 '.git'이 보일겁니다.
찾았습니다.
git에서도 ls 명령어에 옵션을 추가하면 숨김 디렉토리를 확인할 수 있는데요, '$ ls -al' 이렇게 입력하면 숨겨진 것까지 포함해서 모든 디렉토리를 보여줍니다.
다음으로 강의에서 소개한 깃의 세 가지 관리 영역을 정리해보고자 하는데요, 영역에는 'Working Directory', 'Staging Area', 'Repository'가 있었습니다.
먼저 Working Directory는 문서 작업이 이루어지는 장소로, 특정 파일을 수정하게 되면 수정 이력을 기록해야 할 파일은 저장소 가기 전 대기 장소인 Staging Area로 이동하게 됩니다.
Staging Area도 이동한 문서는 '커밋'이라는 작업을 거쳐 수정 이력 최종 기록 장소인 Repository로 이동하게 됩니다.
저장소에서는 수정한 이력들을 구분해서 기억하고, 나중에 특정 수정 시점을 선택해서 이동할 수 있도록 해줍니다. 직접 실습을 하면서 알아가보도록 하겠습니다.
먼저 깃 프로젝트의 상태를 확인하는 명령어인 '$ git status'를 확인하여 현재 상태가 어떤지 보겠습니다.
커밋할 것 즉, 저장소로 보낼 게 없다고 뜹니다. 즉, Repository로 보낼 Staging Area에 있는 파일이 아직 없다는 말인데요. 제가 수정한 게 없으니 수정 이력을 기록해야 할 파일도 없는 것이죠.
그렇다면, 파일을 만들어 수정하고 $ git status 명령어를 입력했을 때 수정 이력을 기록해야 한다는 말이 나오는지 확인해보겠습니다.
이를 위해서 우선 $ touch 명령어로 'text1.txt'라는 이름의 파일을 만들어보겠습니다.
$ touch text1.txt
git_practice 파일을 확인해보니까 text1.txt 라는 txt 파일이 만들어졌다는 걸 확인할 수 있었습니다. 입력한 건 없으니 메모장은 비어있을 겁니다.
파일을 만들고 나서 다시 $ git status를 입력하니 text.txt라는 Untracked file이 만들어졌다고 뜹니다. 여기서 Untracked file은 추적이 되지 않는 파일 즉, 막 생성된 파일을 의미한다고 합니다.
이제 text1 파일에 내용을 입력해보고자 하는데요, 입력을 하고 수정 이력을 Staging Area 그리고, Respository에 저장해보려고 합니다. 글이 길어졌으니 다음 글에 이어서 해보도록 하겠습니다.
참고로 본 내용은 부정확할 수 있으니 유노코딩 YOUTUBE의 깃 설명 영상과 교안을 참고하시길 추천드립니다. 굉장히 쉽게 하나하나씩 설명해주어 이해하기 좋았습니다. 감사합니다!
Thanks to 유노코딩