개발자라면 여러 환경에서 작업해야 할 일이 많습니다. 회사 컴퓨터, 집 데스크톱, 노트북 등 다양한 PC에서 동일한 프로젝트를 개발할 때 코드를 어떻게 관리해야 할까요? Git과 GitHub를 활용하면 이 문제를 효과적으로 해결할 수 있습니다. 이 글에서는 여러 PC에서 하나의 Git 프로젝트를 개발할 때 필요한 모든 것을 단계별로 설명합니다.
1. 기본 환경 설정
모든 PC에서 일관된 개발 환경을 위해 기본 설정을 진행해야 합니다.
Git 설치하기
각 PC에 Git을 설치합니다.
- Windows: https://git-scm.com/download/win 에서 다운로드
- Mac: 터미널에서
brew install git
또는 https://git-scm.com/download/mac - Linux: 터미널에서
sudo apt-get install git
(Ubuntu/Debian) 또는sudo yum install git
(Fedora)
사용자 정보 설정
각 PC에서 동일한 사용자 정보를 설정합니다. 이는 커밋 내역에 표시되는 정보입니다.
bashgit config --global user.name "홍길동"
git config --global user.email "example@email.com"
💡 팁: 회사와 개인 프로젝트를 구분해야 한다면, --global
대신 --local
을 사용해 프로젝트별로 다른 계정을 설정할 수 있습니다.
SSH 키 설정 (선택적)
HTTPS 대신 SSH를 사용하면 매번 비밀번호를 입력하지 않아도 됩니다.
bash# SSH 키 생성
ssh-keygen -t ed25519 -C "example@email.com"
# 공개키 출력 (GitHub에 등록)
cat ~/.ssh/id_ed25519.pub
생성된 공개키를 GitHub 계정의 Settings > SSH and GPG keys에 등록합니다.
2. 저장소 설정 및 접근
새 프로젝트 시작하기
1. GitHub에서 저장소 생성:
- GitHub.com에 로그인
- 우측 상단 ‘+’ 버튼 > New repository
- 저장소 이름과 설명 입력 후 ‘Create repository’ 클릭
2. 첫 번째 PC에서 저장소 초기화 및 푸시:
# 로컬 디렉토리 생성 및 초기화
mkdir 프로젝트명
cd 프로젝트명
git init
# 원격 저장소 연결
git remote add origin https://github.com/사용자명/저장소명.git
# 초기 파일 추가 및 커밋
touch README.md
git add README.md
git commit -m "초기 커밋"
# 원격 저장소에 푸시
git push -u origin main
3. 다른 PC에서 클론하기:
git clone https://github.com/사용자명/저장소명.git cd 저장소명
기존 프로젝트 접근하기
이미 존재하는 프로젝트의 경우, 각 PC에서 다음 명령으로 클론합니다:
git clone https://github.com/사용자명/저장소명.git
SSH를 설정했다면:
git clone git@github.com:사용자명/저장소명.git
3. 효율적인 작업 흐름 구축
여러 PC에서 작업할 때는 체계적인 작업 흐름이 필수적입니다.
기본 작업 흐름
모든 PC에서 동일한 작업 흐름을 따릅니다:
1. 작업 시작 전 최신 코드 받기:
git pull origin main
2. 작업 브랜치 생성 (기능/작업별 권장):
git checkout -b 기능/로그인_구현
3. 코드 수정 및 테스트
4. 변경사항 스테이징 및 커밋:
git add . # 또는 특정 파일만: git add 파일명 git commit -m "로그인 기능 구현 완료"
5. 원격 저장소에 푸시:
git push origin 기능/로그인_구현
6. GitHub에서 Pull Request 생성 (선택적):
- GitHub 저장소 페이지에서 ‘Pull requests’ 탭 클릭
- ‘New pull request’ 버튼 클릭
- 브랜치 선택 후 ‘Create pull request’ 클릭
7. 메인 브랜치에 병합: Pull Request가 승인되거나, 개인 프로젝트라면 직접 병합:
git checkout main
git merge 기능/로그인_구현
git push origin main
작업 중단 및 재개
다른 PC로 이동해 작업을 계속해야 할 경우:
1. 현재 PC에서 작업 내용 커밋 및 푸시:
git add .
git commit -m "작업 중간 저장"
git push origin 현재_브랜치
2. 다른 PC에서 작업 재개:
git pull origin 현재_브랜치
git checkout 현재_브랜치 # 이미 존재하는 브랜치라면
# 또는
git checkout -b 현재_브랜치 origin/현재_브랜치 # 로컬에 없는 브랜치라면
4. 충돌 이해하기 및 해결 방법
충돌은 여러 PC에서 같은 파일의 같은 부분을 다르게 수정할 때 발생합니다. 제안된 작업 흐름이 충돌을 완전히 방지할 수는 없지만, 상당히 줄일 수 있습니다.
충돌이 발생하는 상황
- 두 PC에서 동시에 같은 파일의 같은 부분을 수정
- 한 PC에서 오랫동안
pull
없이 작업한 후 푸시 - 브랜치 간 병합 시 같은 파일이 다르게 수정됨
충돌 해결 과정
1. 충돌 확인: git pull
또는 git merge
명령 실행 시 아래와 같은 메시지가 표시됩니다.
CONFLICT (content): Merge conflict in 파일명
Automatic merge failed; fix conflicts and then commit the result.
2. 충돌 파일 확인:
git status
3. 충돌 파일 수정: 충돌이 발생한 파일을 열면 다음과 같은 마커가 표시됩니다:
<<<<<<< HEAD
현재 브랜치의 코드
=======
병합하려는 브랜치의 코드
>>>>>>>
브랜치명
이 부분을 수정하여 최종 코드를 결정합니다.
4. 충돌 해결 완료 후 커밋:
- 충돌 확인:
git pull
또는git merge
명령 실행 시 아래와 같은 메시지가 표시됩니다.CONFLICT (content): Merge conflict in 파일명 Automatic merge failed; fix conflicts and then commit the result.
- 충돌 파일 확인: bash
git status
- 충돌 파일 수정: 충돌이 발생한 파일을 열면 다음과 같은 마커가 표시됩니다:
<<<<<<< HEAD 현재 브랜치의 코드 ======= 병합하려는 브랜치의 코드 >>>>>>> 브랜치명
이 부분을 수정하여 최종 코드를 결정합니다. - 충돌 해결 완료 후 커밋:
bashgit add . git commit
(이 때 커밋 메시지는 자동으로 생성됩니다)
충돌 방지 전략
- 작은 단위로 자주 커밋하기: 변경사항을 작게 유지하면 충돌 발생 시 해결이 쉬워집니다.
- 작업 전 항상 최신 코드 받기:
git pull
을 습관화합니다. - 기능별 브랜치 사용: 각 기능마다 별도 브랜치를 사용하면 메인 코드와의 충돌을 줄일 수 있습니다.
- 팀원과 소통: 같은 파일을 동시에 수정하지 않도록 소통합니다.
5. 고급 팁 및 베스트 프랙티스
Git Aliases 설정
자주 사용하는 명령어를 단축어로 설정할 수 있습니다:
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
이제 git st
로 git status
를 실행할 수 있습니다.
Git 인증 정보 캐싱
반복적인 비밀번호 입력을 피하려면:
# Windows
git config --global credential.helper wincred
# Mac
git config --global credential.helper osxkeychain
# Linux
git config --global credential.helper cache --timeout=3600
.gitignore 파일 활용
각 PC마다 다른 환경 설정 파일이나 임시 파일을 무시하도록 .gitignore
를 설정합니다:
# IDE 설정
.vscode/
.idea/
# 환경 설정
.env.local
config.local.js
# 빌드 결과물
/dist
/build
/node_modules
자동 스크립트 활용
작업 시작/종료 시 실행할 스크립트를 만들어 자동화:
start-work.sh:
#!/bin/bash
git checkout main
git pull origin main
echo "최신 코드를 받았습니다. 작업을 시작하세요."
end-work.sh:
#!/bin/bash
git add .
git commit -m "작업 종료: $(date)"
git push origin $(git branch --show-current)
echo "작업 내용이 저장되었습니다."
결론
여러 PC에서 Git 프로젝트를 효과적으로 관리하려면 일관된 작업 흐름과 좋은 습관이 필요합니다. 이 가이드를 통해 배운 방법을 실천하면 여러 환경에서도 코드를 체계적으로 관리할 수 있습니다. 처음에는 복잡해 보일 수 있지만, 이 과정이 습관이 되면 개발 생산성이 크게 향상됩니다.
Git과 GitHub는 단순한 버전 관리 도구를 넘어, 개발자의 작업 방식을 변화시키는 강력한 도구입니다. 이 가이드가 여러분의 개발 여정에 도움이 되길 바랍니다.