“`html
Git 완전 정복: 초보자를 위한 친절한 안내서
Git이란 무엇일까요?
버전 관리 시스템의 필요성
프로그래밍을 하다 보면 수많은 파일들이 생겨나고, 각 파일들은 계속해서 수정됩니다. 이때, 과거의 특정 시점으로 돌아가고 싶거나, 여러 사람이 동시에 작업한 내용을 합쳐야 하는 상황이 발생하곤 합니다. 이러한 문제들을 효율적으로 해결해주는 것이 바로 버전 관리 시스템입니다.
버전 관리 시스템은 파일 변경 이력을 기록하고 관리하여, 협업을 용이하게 하고, 실수로 파일을 삭제하거나 덮어썼을 때 이전 상태로 복구할 수 있도록 도와줍니다. 마치 게임에서 세이브 포인트를 만들어두는 것과 비슷하다고 생각하시면 됩니다. 제 경험상, 버전 관리 시스템 없이 프로젝트를 진행하는 것은 마치 눈을 감고 운전하는 것과 같습니다.
Git의 기본 개념
Git은 현재 가장 널리 사용되는 분산 버전 관리 시스템입니다. 분산 버전 관리 시스템은 중앙 서버에만 모든 변경 이력을 저장하는 것이 아니라, 각 개발자의 컴퓨터에도 전체 저장소의 복사본을 저장합니다. 이는 중앙 서버에 문제가 발생하더라도 로컬 저장소를 통해 작업을 계속할 수 있다는 장점을 가집니다.
Git의 핵심 개념은 다음과 같습니다. Repository(저장소): 프로젝트 파일과 변경 이력을 저장하는 공간입니다. Commit(커밋): 파일 변경 내용을 저장소에 기록하는 행위입니다. Branch(브랜치): 독립적인 작업 공간을 만들어 여러 기능을 동시에 개발할 수 있도록 해줍니다. Merge(병합): 서로 다른 브랜치의 변경 내용을 합치는 과정입니다.
Git 설치 및 기본 설정
Git 설치 방법 (Windows, macOS, Linux)
Git은 운영체제별로 다양한 방법으로 설치할 수 있습니다. Windows에서는 Git for Windows를 다운로드하여 설치하고, macOS에서는 Homebrew를 통해 `brew install git` 명령어를 사용하거나, Git 공식 웹사이트에서 제공하는 설치 파일을 사용할 수 있습니다. Linux에서는 각 배포판의 패키지 관리자를 이용하여 `apt-get install git` (Ubuntu/Debian) 또는 `yum install git` (CentOS/RHEL) 명령어를 통해 설치할 수 있습니다.
설치 후 터미널 또는 명령 프롬프트에서 `git –version` 명령어를 입력하여 Git이 정상적으로 설치되었는지 확인할 수 있습니다. 만약 버전 정보가 출력되지 않는다면, 환경 변수 설정을 확인하거나, Git 설치 경로가 시스템 PATH에 추가되었는지 확인해야 합니다.
사용자 이름 및 이메일 설정
Git은 각 커밋에 대한 정보를 기록하기 위해 사용자 이름과 이메일 주소를 필요로 합니다. 다음 명령어를 사용하여 사용자 이름과 이메일 주소를 설정할 수 있습니다.
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
`–global` 옵션을 사용하면, 설정이 시스템의 모든 Git 저장소에 적용됩니다. 특정 저장소에만 설정을 적용하고 싶다면, `–global` 옵션을 생략하고 저장소 디렉토리에서 명령어를 실행하면 됩니다. 실제로 사용해보니, 이 설정을 빼먹으면 나중에 커밋 기록을 확인할 때 불편함을 겪을 수 있습니다.
Git 기본 명령어 실습
저장소 생성 및 초기화 (git init)
새로운 프로젝트를 시작하거나, 기존 프로젝트에 Git을 적용하려면 저장소를 생성해야 합니다. 터미널에서 프로젝트 디렉토리로 이동한 후 `git init` 명령어를 실행하면 됩니다. 이 명령어는 현재 디렉토리에 `.git`이라는 숨겨진 디렉토리를 생성합니다. `.git` 디렉토리에는 Git이 저장소의 모든 변경 이력을 저장하는 데 필요한 정보가 담겨 있습니다.
git init
명령어 실행 후, 프로젝트 디렉토리에 `README.md` 파일을 생성하고 간단한 설명을 추가해봅시다. `touch README.md` 명령어를 사용하여 파일을 생성하고, 텍스트 편집기를 이용하여 내용을 작성할 수 있습니다.
파일 추가 및 커밋 (git add, git commit)
파일을 Git 저장소에 추가하려면 `git add` 명령어를 사용해야 합니다. `git add README.md` 명령어는 `README.md` 파일을 스테이징 영역에 추가합니다. 스테이징 영역은 커밋에 포함될 변경 사항들을 임시로 저장하는 공간입니다.
스테이징 영역에 추가된 파일들을 저장소에 기록하려면 `git commit` 명령어를 사용해야 합니다. `git commit -m “Initial commit: Add README.md”` 명령어는 스테이징 영역에 있는 파일들을 커밋하고, 커밋 메시지로 “Initial commit: Add README.md”를 기록합니다. 커밋 메시지는 변경 내용에 대한 간략한 설명을 담고 있어야 하며, 다른 개발자들이 변경 내용을 이해하는 데 도움을 줍니다.
변경 사항 확인 (git status, git diff)
`git status` 명령어는 저장소의 현재 상태를 보여줍니다. 커밋되지 않은 변경 사항, 스테이징 영역에 추가된 파일, 추적되지 않는 파일 등을 확인할 수 있습니다. `git diff` 명령어는 파일의 변경 내용을 보여줍니다. 스테이징 영역에 추가되지 않은 변경 사항을 확인하려면 `git diff` 명령어를 사용하고, 스테이징 영역에 추가된 변경 사항을 확인하려면 `git diff –staged` 명령어를 사용합니다.
파일을 수정하고 `git status` 명령어를 실행해보면, 수정된 파일이 “modified” 상태로 표시되는 것을 확인할 수 있습니다. `git add` 명령어를 사용하여 수정된 파일을 스테이징 영역에 추가하고, `git commit` 명령어를 사용하여 변경 사항을 커밋하면 변경 이력이 저장됩니다.
원격 저장소 활용 (GitHub, GitLab)
원격 저장소 생성 및 연결
GitHub, GitLab, Bitbucket과 같은 플랫폼을 이용하여 원격 저장소를 생성할 수 있습니다. 원격 저장소는 코드 백업, 협업, 배포 등의 목적으로 사용됩니다. GitHub에 계정을 생성하고 새로운 저장소를 만든 후, 로컬 저장소를 원격 저장소에 연결할 수 있습니다.
로컬 저장소를 원격 저장소에 연결하려면 `git remote add origin [원격 저장소 URL]` 명령어를 사용해야 합니다. `origin`은 원격 저장소의 별칭으로, 일반적으로 `origin`이라는 이름을 사용합니다. `[원격 저장소 URL]`은 GitHub 또는 GitLab에서 제공하는 저장소 URL입니다.
푸시 및 풀 (git push, git pull)
로컬 저장소의 변경 내용을 원격 저장소에 업로드하려면 `git push origin main` 명령어를 사용해야 합니다. `origin`은 원격 저장소의 별칭이고, `main`은 브랜치 이름입니다. 원격 저장소의 변경 내용을 로컬 저장소에 다운로드하려면 `git pull origin main` 명령어를 사용해야 합니다.
협업 환경에서는 여러 사람이 동시에 작업을 진행하므로, `git pull` 명령어를 사용하여 최신 변경 사항을 로컬 저장소에 동기화하는 것이 중요합니다. 개인적으로는, 매일 아침 업무 시작 전에 `git pull` 명령어를 실행하여 최신 코드를 확인하는 습관을 들였습니다.
결론
Git은 복잡해 보일 수 있지만, 꾸준히 사용하다 보면 익숙해질 수 있습니다. 이 글에서 다룬 내용은 Git의 기본적인 기능이며, 더 많은 기능을 익히고 활용하여 프로젝트를 효율적으로 관리할 수 있습니다. 다음 단계로는 브랜치 전략, 충돌 해결, Git Hooks 등을 학습하는 것을 추천합니다. Git을 마스터하여 효율적인 개발자가 되세요!
“`