PC, 스마트폰 앱, 게임 등은 시도 때도 없이 업데이트된다
앱 서비스를 종료하지 않는 이상 업데이트는 벗어날 수 없다
빈번한 업데이트를 체계적으로 관리하려면 소스 코드에 언제, 어떤 변화가 있었는지 기록하고 추적하는 버전 관리가 필요하다
필자는 현업에서 중앙 집중 관리 방식(근데 SVN은 또 아닌)의 형상관리로 협업을 한 경험이 있다.
이렇게 복잡한 상황을 체계적으로 관리하려면 분산형 버전 관리 시스템이 필요하다
원격 저장소가 동작하지 않거나
원격 저장소의 소스 코드에 접근할 수 없는 문제
가 생겨도 각 개발자의 소스 코드와 버전 이력을 활용해 최신 버전을 복구할 수 있다 Git
은 가장 많이 사용되는 분산형 버전 관리 시스템이며GitHub
는 깃을 이용하여 관리하는 프로젝트의 원격 저장소 역할을 수행하는 웹 호스팅 서비스이다분산형 버전 관리 시스템인 Git
은 Linux Kernel을 개발한 리누스 토르발스가 리눅스 커널 개발에 참여했던 다른 개발자들과 함께 2005년에 개발했다
처음 개발은 리누스 토르발스가 시작했지만, 유지보수는 주니오 하마노가 담당하고 있다
깃은 코드가 모두 공개되어있는 오픈 소스이며, 리눅스/맥OS/윈도우 운영체제를 지원한다
깃허브는 깃 프로젝트를 지원하는 2008년 시작된 호스팅 서비스이며, 2018년 마이크로소프트에 인수되면서 다양한 기능이 추가되었다
(2023년 7월 기준)
(2023년 7월 기준)
검색창
왼쪽 위에서부터 아래 순서로
실습할 루트 폴더(예: git-study)와 하위 폴더(예: chapter1-basic)를 깔쌈하게 만들어준다
터미널을 실행하여 만들었던 하위 폴더로 이동하고 git init 명령어를 입력하면 깃 지역 저장소로 지정된다
Initialized empty Git repository in {프로젝트 경로}/.git
이라는 문구가 출력된다
git config 명령어를 입력하여 깃 지역 저장소에 사용자를 등록한다
이제 새로운 파일을 하나 생성한 후에 내용을 작성한다
VSCode 탐색기에서 폴더 추가 아이콘을 클릭하고 README.md를 입력해 md 파일을 생성한다
생성한 파일에 '깃과 깃허브 실습'이라고 입력하고 저장한다
확장자
.md
는 마크다운 형식의 파일을 의미한다. 마크다운 파일에서는 간단한 문법 구조를 이용해 들여쓰기, 글꼴, 헤더 등을 표현할 수 있다.
깃허브 원격 저장소에
README.md
파일을 생성하면 해당 원격 저장소의 메인 페이지로 작동한다. 이러한 이유로 프로젝트에 대한 설명, 설치 방법 등을 설명하는 데 README.md 파일을 사용한다.
새로운 파일을 생성하고 수정했으니, 새로운 커밋을 만들 차례다
터미널에서 git add 명령어를 실행하여 README.md 파일을 커밋에 포함될 파일로 등록한다
커밋에 포함될 파일 등록을 완료했으므로 새로운 커밋을 생성한다
-m
옵션은 생성하는 커밋의 메시지를 작성하는 기능을 제공한다
git log 명령어로 커밋이 잘 생성되었는지 한 번 더 확인한다
위 사진처럼 결과가 나오면 성공적으로 커밋이 된 것이다
내 컴퓨터의 지역 저장소에 커밋을 생성했으니 이제 원격 저장소에 생성된 커밋을 등록한다
깃허브 페이지에서 새로운 원격 저장소를 생성하는 것으로 시작한다
New repository
나 깃허브에서 왼쪽 상단(2023년 7월 기준) Repositories
를 클릭한 후 📗 New
를 클릭하여 새 저장소를 생성할 수 있다
원격 저장소를 생성했는데 이름을 고치고 싶으면 ⚙Settings - ⚙General
에 가서 저장소 이름을 변경할 수 있다
원격 저장소 이름은 지역 저장소의 이름과 같을 필요는 없다
오른쪽 하단에 네모 두 개가 겹친 아이콘을 클릭하여 현재 들어가있는 원격 저장소의 주소를 복사한다
지역 저장소의 커밋을 원격 저장소에 등록하기 위해서는 원격 저장소의 주소를 지역 저장소에 알려줘야 하므로 주소를 복사한 것이다
터미널에서 git remote add origin을 입력하고 그 뒤에 복사한 원격 저장소 주소를 붙여넣고 엔터를 눌러 실행한다
원격 저장소의 주소를 등록할 때 사용한 origin
은 특정 원격 저장소를 식별하는 이름이다
지역 저장소 하나에 여러 원격 저장소를 등록할 수 있으며, origin으로 사용하거나 꼭 origin이 아니더라도 다른 이름으로 정해도 된다
지역 저장소에서 생성한 커밋을 원격 저장소에 등록해보자
git push origin main 명령어로 지역 저장소에서 생성한 커밋을 원격 저장소에 등록한다
origin은 리모트 저장소 이름, main은 리모트 저장소의 branch 이름이다
그런데 만약 위와 같이 src refspec main does not match any
라고 push가 안 된다면
git branch -M main
git push -u origin main
(필자 해석) 브랜치를 먼저 main으로 설정하고 origin이라는 이름으로 main에 push하면 된다
원격 저장소 페이지에 접속하여 커밋이 성공적으로 등록되었는지 확인한다. 정상적으로 커밋이 등록되었다면 위 사진처럼 커밋 이력을 확인할 수 있다
위에서도 언급했지만, README.md 파일은 원격 저장소의 메인 페이지 역할을 한다. 작성한 README.md 파일의 내용이 메인 페이지에 노출되면 제대로 커밋을 등록한 것이다.
깃과 깃허브를 처음 사용하게 된다면 2021년 8월 13일 전까지는 패스워드 입력을 요구받았었다
하지만, 지금(2023년 7월)은 그런 깃허브 계정 패스워드를 통한 인증 방식은 중단되었다
이는 깃허브 계정을 생성할 때 만들었던 패스워드로 깃 명령어 사용에 대한 인증을 할 수 없다는 것이 된다
그래서 깃허브에서 제공하는 개인용 액세스 토큰을 발급받아 해당 토큰을 패스워드로 사용해야 한다
⚙Settings
(저장소에 있는 세팅 아니다) -> Developer settings
-> Personal access tokens
메뉴에서 발급받을 수 있다
요즘에는 새 인증 방식을 베타로 내놓은 것 같은데, 일단 classic한 버전을 먼저 사용해서 익히는 것이 좋다
이미 발급받은 상태라면 이렇게 나올 것이다
토큰 생성 시 무리없이 깃을 연습하려면 Select scopes 항목에서 repo
와 workflow
를 꼭 선택해야 한다
이렇게 생성한 토큰을 인증 패스워드로 사용하면 된다
박미정의 깃&깃허브 입문 - 1단계 : 초보자를 위한 깃&깃허브