개발을 하다 보면 Git 관련 다양한 상황에 부딪히게 됩니다.
이 게시물에서는 프로젝트 초기 설정 및 첫 커밋, 코드 수정 후 커밋, 최신 커밋 적용 방법 그리고 강제 push 방법 등 여러 상황에 따른 Git 사용법을 단계별로 정리해보겠습니다.
1. 프로젝트 초기 설정 및 첫 커밋
프로젝트를 처음 시작할 때는 아래와 같은 단계로 Git을 초기화하고 첫 커밋을 생성할 수 있습니다.
프로젝트 폴더 생성
작업할 디렉토리를 생성하고 해당 폴더로 이동합니다.mkdir my_project cd my_projectGit 초기화
해당 폴더에서 Git 저장소를 초기화합니다.git init파일 추가 및 첫 커밋 생성
예를 들어, 기본 문서를 추가하고 초기 커밋을 만듭니다.echo "# My Project" > README.md git add . git branch -M main git commit -m "Initial commit"GitHub 저장소 생성
GitHub에 접속하여 원격 저장소를 생성합니다.
- GitHub에 로그인합니다.
- 오른쪽 상단의 ”+” 버튼을 클릭하고 **“New repository”**를 선택합니다.
- 저장소 이름, 설명 등을 입력하고 “Create repository” 버튼을 눌러 저장소를 만듭니다.
생성 후, GitHub는 로컬에서 연결할 수 있도록 저장소 URL(예: https://github.com/username/repository.git)을 제공합니다.
- 원격 저장소 등록
로컬 저장소와 GitHub의 원격 저장소를 연결하려면 아래 명령어를 사용합니다.
원격 저장소 추가
GitHub에서 제공받은 URL을 사용하여 원격 저장소를 추가합니다.git remote add origin https://github.com/username/repository.git여기서
origin은 원격 저장소의 기본 이름으로 사용되며, 상황에 따라 다른 이름을 사용할 수도 있습니다.원격 저장소 확인
등록된 원격 저장소를 확인합니다.git remote -v
이제 프로젝트 폴더에 Git이 적용되었으며, 첫 커밋이 성공적으로 기록되었습니다.
- git push를 통한 커밋 업로드
원격 저장소와 로컬 저장소가 연동되면, 커밋한 변경사항을 GitHub에 업로드할 수 있습니다.
최초 push 시 브랜치 설정
처음 push할 때는-u옵션을 사용하여 기본 브랜치를 설정합니다.git push -u origin mainNOTE
기본 브랜치명이
main이 아닌 경우master또는 다른 브랜치명을 사용하세요.이후 push
추가적인 커밋 후에는 단순히 아래 명령어로 변경사항을 업로드할 수 있습니다.git push
2. 코드 수정 후 커밋
프로젝트 개발 중 코드를 수정한 후에는 아래 단계로 변경사항을 커밋할 수 있습니다.
현재 상태 확인
어떤 파일이 수정되었는지 확인합니다.git status수정된 파일 추가
변경된 파일을 스테이징 영역에 추가합니다.git add 파일이름.py여러 파일을 한 번에 추가할 수도 있습니다. 보통 이걸 많이 사용합니다.
git add .커밋 생성
변경 사항에 대해 설명하는 커밋 메시지와 함께 커밋을 생성합니다.git commit -m "Fix: 버그 수정 및 코드 개선"
이제 수정된 사항들이 새로운 커밋으로 기록되어 버전 관리가 용이해집니다.
- 이후 push
이후 필요하다면 push로 원격저장소에 업로드합니다. 보통 협업시에는 이렇게 업로드해야 됩니다.git push
3. 최신 커밋 적용 방법 (Pull)
협업 프로젝트에서 다른 팀원이 먼저 커밋을 올렸을 경우, 최신 커밋을 반영해야 합니다. 아니면 push가 안됩니다.
이때는 아래와 같이 최신 커밋을 받아옵니다.
git pull origin main
- git pull: 원격 저장소의 최신 커밋을 로컬 저장소에 병합합니다.
- origin: 원격 저장소의 기본 이름입니다.
- main: 작업 중인 브랜치 이름으로, 상황에 따라 master 또는 다른 브랜치명이 될 수 있습니다.
업데이트 후 충돌(conflict)이 발생하면 충돌 해결 과정을 거치면 됩니다.
4. 강제 올리는 방법 (Force Push)
가끔 로컬 커밋 히스토리를 수정하거나 재정렬(rebase)한 후 원격 저장소에 반영해야 하는 경우가 있습니다.
이때 강제 push를 사용합니다. 그러나 이 방법은 매우 주의해서 사용해야 하며, 협업 중이라면 다른 팀원과 충분한 협의 후 진행해야 합니다.
git push --force origin main
- —force: 로컬 변경 사항을 원격 저장소에 강제로 덮어씁니다.
CAUTION원격 저장소의 커밋 히스토리가 재작성되므로, 다른 팀원이 동일한 브랜치에서 작업 중이라면 충돌이 발생할 수 있습니다.
