여러 PC에서 Git 프로젝트 개발하는 가이드




개발자라면 여러 환경에서 작업해야 할 일이 많습니다. 회사 컴퓨터, 집 데스크톱, 노트북 등 다양한 PC에서 동일한 프로젝트를 개발할 때 코드를 어떻게 관리해야 할까요? Git과 GitHub를 활용하면 이 문제를 효과적으로 해결할 수 있습니다. 이 글에서는 여러 PC에서 하나의 Git 프로젝트를 개발할 때 필요한 모든 것을 단계별로 설명합니다.


1. 기본 환경 설정

모든 PC에서 일관된 개발 환경을 위해 기본 설정을 진행해야 합니다.

Git 설치하기

각 PC에 Git을 설치합니다.

사용자 정보 설정

각 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에서 같은 파일의 같은 부분을 다르게 수정할 때 발생합니다. 제안된 작업 흐름이 충돌을 완전히 방지할 수는 없지만, 상당히 줄일 수 있습니다.

충돌이 발생하는 상황

  1. 두 PC에서 동시에 같은 파일의 같은 부분을 수정
  2. 한 PC에서 오랫동안 pull 없이 작업한 후 푸시
  3. 브랜치 간 병합 시 같은 파일이 다르게 수정됨

충돌 해결 과정

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. 충돌 해결 완료 후 커밋:

  1. 충돌 확인: git pull 또는 git merge 명령 실행 시 아래와 같은 메시지가 표시됩니다. CONFLICT (content): Merge conflict in 파일명 Automatic merge failed; fix conflicts and then commit the result.
  2. 충돌 파일 확인: bashgit status
  3. 충돌 파일 수정: 충돌이 발생한 파일을 열면 다음과 같은 마커가 표시됩니다: <<<<<<< HEAD 현재 브랜치의 코드 ======= 병합하려는 브랜치의 코드 >>>>>>> 브랜치명 이 부분을 수정하여 최종 코드를 결정합니다.
  4. 충돌 해결 완료 후 커밋:
bashgit add . git commit

(이 때 커밋 메시지는 자동으로 생성됩니다)

충돌 방지 전략

  1. 작은 단위로 자주 커밋하기: 변경사항을 작게 유지하면 충돌 발생 시 해결이 쉬워집니다.
  2. 작업 전 항상 최신 코드 받기: git pull을 습관화합니다.
  3. 기능별 브랜치 사용: 각 기능마다 별도 브랜치를 사용하면 메인 코드와의 충돌을 줄일 수 있습니다.
  4. 팀원과 소통: 같은 파일을 동시에 수정하지 않도록 소통합니다.

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 stgit 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는 단순한 버전 관리 도구를 넘어, 개발자의 작업 방식을 변화시키는 강력한 도구입니다. 이 가이드가 여러분의 개발 여정에 도움이 되길 바랍니다.




Leave a Comment