Git: At a Glance

국부은하군·2024년 10월 22일

Git

목록 보기
1/2
post-thumbnail

Git과 GitHub: 한눈에 살펴보기

1. Git과 GitHub란?

Git은 소프트웨어 버전 관리 시스템(VCS)이다. 소프트웨어 개발에서 여러 개발자가 동시에 협업할 때 코드 수정 내역을 서로 공유하고 관리함으로써 효율적인 개발을 도와준다. Git은 분산 버전 관리 시스템으로, 중앙 서버(Git server)와 로컬 클라이언트(Git client)가 각각 존재한다. 예를 들어, GitHub.com과 같은 원격 서버는 중앙에 코드를 저장하고, Visual Studio CodeGit CLI 같은 클라이언트를 통해 로컬에서도 작업할 수 있다. 이러한 분산 구조 덕분에 모든 팀원이 로컬에서 자유롭게 작업할 수 있으며, 변경 사항을 원격 서버에 반영하여 협업을 원활히 할 수 있다.

2. 리포지토리 만들기 & 커밋하기

리포지토리(Repository)는 프로젝트와 관련된 모든 파일과 그 파일의 수정 기록을 담는 저장소이다. GitHub에서는 리포지토리를 통해 코드를 저장하고 관리할 수 있을 뿐만 아니라 협업을 위한 여러 기능도 제공한다.

커밋(commit)은 특정 변경 사항을 저장하는 과정으로, Git에서 버전을 관리하는 데 필수적인 역할을 한다. 커밋을 통해 변경 내역을 기록하고, 나중에 필요할 때 쉽게 이전 상태로 되돌아갈 수 있다. 커밋에는 변경 내용을 설명하는 커밋 메시지를 작성하여, 다른 팀원들이 어떤 수정이 이루어졌는지 쉽게 이해할 수 있도록 돕는다.

대규모 프로젝트에서는 Git을 도입하여 효율적인 협업이 가능하며, 커밋 히스토리를 통해 프로젝트의 모든 변경 내역을 추적할 수 있다. 이렇게 하면 누가 언제 어떤 부분을 수정했는지 명확히 알 수 있어 문제 발생 시 빠르게 원인을 파악할 수 있다.

3. GitHub Issues로 소통하기

Issues는 개발 중 발생하는 문제나 개선사항을 추적하는 도구이다. 예를 들어, 새로운 기능을 추가하거나 버그를 수정해야 할 때 Issues를 통해 이를 기록하고 관리할 수 있다. 팀원들 간의 의견 교환도 Issues를 통해 이루어질 수 있다.

라벨(labels)을 이용해 이슈의 유형을 명확히 표시하고, Assignee를 통해 담당자를 지정하여 협업을 원활하게 할 수 있다. 이렇게 하면 팀 내 소통을 강화하고, 효과적으로 문제를 해결할 수 있다. 또한, 특정 코드에 문제가 있을 때 코드에 댓글을 달아 다른 개발자와 의견을 공유할 수 있다.

4. 클론(복제) & Git 설정

클론(Clone)은 GitHub의 리포지토리를 로컬 컴퓨터로 복제하는 과정이다. 이를 통해 로컬 환경에서 원격 리포지토리의 파일들을 받아와 개발을 진행할 수 있다. 이렇게 하면 로컬에서 자유롭게 실험하거나 수정할 수 있고, 수정한 내용을 다시 원격 저장소에 반영할 수 있다.

또한, Git 설정(git config) 명령어를 사용해 로컬에서 커밋 시 누가 작업을 했는지 기록할 수 있다. 예를 들어, git config --global user.name "사용자 이름"git config --global user.email "사용자 이메일"을 설정하여 커밋 기록에 사용자 정보를 남길 수 있다.

5. Git Push: 원격 저장소에 업로드

로컬에서 작업한 내용을 원격 저장소에 반영하려면 Push 명령어를 사용한다. Push는 로컬에서 커밋한 모든 변경 사항을 원격 저장소에 업로드하는 과정이다. 이를 통해 다른 팀원들도 내가 작업한 내용을 확인하고 함께 작업을 진행할 수 있다.

Push 명령어를 사용할 때는 원격 저장소의 이름(일반적으로 origin)과 업로드할 브랜치를 지정해줘야 한다. 예를 들어, git push origin main 명령어를 사용하면 로컬에서 작업한 main 브랜치를 원격 저장소의 main 브랜치에 반영할 수 있다.

6. Git Pull: 원격 변경사항 반영하기

다른 팀원이 원격 저장소에 push한 변경사항을 내 로컬 환경에 반영하고 싶을 때 pull 명령어를 사용한다. Pullfetchmerge가 결합된 명령어로, 원격 저장소의 변경 사항을 가져와 로컬 저장소와 병합한다. 이를 통해 최신 상태로 동기화하여 작업을 이어나갈 수 있다.

7. Fetch & Merge: 분리된 동기화 과정

Fetch는 원격 저장소의 변경 사항을 가져오기만 하는 명령어이고, Merge는 가져온 변경 사항을 로컬에 병합하는 과정이다. Pull 대신 fetchmerge를 나눠서 사용하면 충돌을 미리 해결하고 안전하게 병합할 수 있다. 예를 들어, git fetch origin을 사용하여 원격 저장소의 변경 사항을 가져오고, git merge origin/main을 사용하여 로컬 브랜치와 병합할 수 있다.

8. Git Init & Add: 로컬 저장소 시작하기

Git Init은 로컬 저장소를 Git으로 관리할 수 있게 설정하는 명령어이다. 프로젝트 폴더에서 git init 명령어를 실행하면 해당 폴더가 Git 저장소로 초기화된다. 이를 통해 로컬에서 버전 관리를 시작할 수 있다.

Git Add는 커밋할 파일을 선택하는 명령어로, 커밋하기 전에 변경된 파일을 스테이징(staging) 영역에 올리는 역할을 한다. 한 커밋에 포함할 파일을 정리하고 관리할 수 있도록 돕는다. 예를 들어, git add 파일명 명령어를 사용하면 해당 파일이 스테이징 영역에 추가되고, 이후 git commit 명령어를 통해 커밋할 수 있다.

9. Git Checkout: 이전 버전으로 돌아가기

Git Checkout은 특정 커밋의 상태로 저장소를 되돌리는 명령어이다. 예를 들어, 코드에 문제가 발생했을 때 이전 커밋으로 되돌아가 오류를 수정할 수 있다. HEAD는 현재 작업 중인 위치를 가리키며, master(main)는 최신 커밋을 가리킨다. Checkout을 통해 원하는 커밋으로 되돌아갔다가, 다시 최신 버전으로 복구할 수 있다.

예를 들어, git checkout 커밋해시 명령어를 사용하면 해당 커밋의 상태로 작업 디렉토리가 변경된다. 이후 수정이 완료되면 git checkout main을 통해 최신 버전으로 돌아올 수 있다.

profile
생각, 기술, 회고 등 다양한 분야를 기록합니다.

0개의 댓글