Git을 사용하면 로컬 저장소에서 개발 작업을 진행할 수 있지만, 협업이나 프로젝트 관리를 위해 리모트 저장소 사용이 필수적입니다. 이 글에서는 원격 저장소를 설정하고 관리하는 방법과 원격 저장소와 로컬 저장소 간의 동기화를 위한 git push, git pull, git fetch 등의 명령어를 알아보겠습니다.
원격 저장소 설정하기
원격 저장소를 설정하려면 저장소를 호스팅하는 웹 서비스(GitHub, GitLab, Bitbucket 등)에서 저장소를 생성해야 합니다. 저장소가 생성되면, 해당 저장소의 URL을 사용하여 리모트 저장소를 로컬 저장소와 연결할 수 있습니다. 다음 명령어를 사용하여 리모트 저장소를 추가합니다.
git remote add origin <원격_저장소_URL>
이 명령어에서 origin
은 원격 저장소의 별칭입니다. 보통 첫 번째 원격 저장소는 origin
으로 명명합니다.
리모트 저장소 관리하기
리모트 저장소를 확인하려면 다음 명령어를 사용합니다.
git remote -v
이 명령어는 설정된 모든 리모트 저장소와 그 URL을 출력합니다.
리모트 저장소를 제거하려면 다음 명령어를 사용합니다.
git remote remove <리모트_이름>
원격 저장소와 로컬 저장소 동기화하기
로컬 저장소에서 작업한 내용을 원격 저장소에 반영하려면 git push
명령어를 사용합니다.
git push <리모트_이름> <브랜치_이름>
예를 들어, 로컬 저장소의 main
브랜치를 origin
원격 저장소에 푸시하려면 다음과 같이 입력합니다.
git push origin main
원격 저장소의 변경 사항을 로컬 저장소에 가져오려면 git pull
명령어를 사용합니다.
git pull <리모트_이름> <브랜치_이름>
원격 저장소의 변경 사항을 로컬 저장소로 가져오되, 자동 병합을 하지 않으려면 git fetch
명령어를 사용합니다.
git fetch <리모트_이름>
Git 리모트 예제 1
이 예제에서는 로컬에 remote/
와 client/
두 개의 폴더를 생성하고, 간단한 파일을 추가하여 원격 저장소에 푸시하는 예제입니다.
리모트, 로컬 저장소 만들기
remote/
폴더를 생성합니다.
mkdir remote
remote/
폴더로 이동한 뒤, Git 저장소를 초기화합니다.
cd remote
git init --bare
remote/
폴더와 같은 위치에 client/
폴더를 생성하고, Git 저장소를 초기화합니다.
cd ..
mkdir client
cd client
git init
원격 저장소 설정하기
client/
저장소에서 remote/
저장소를 원격 저장소로 설정합니다.
git remote add origin ../remote/
파일 추가 및 커밋
client/
폴더에 README.md
파일을 생성하고, 간단한 내용을 작성합니다.
echo "# My Project" > README.md
README.md
파일을 스테이징 영역에 추가하고, 커밋합니다.
git add README.md
git commit -m "Add README.md"
원격 저장소에 푸시하기
client/
저장소의 변경 사항을 remote/
저장소에 푸시합니다.
git push origin main
Git 리모트 예제 2
이 예제에서는 '에제 1' 에서 리모트에 푸시한 내용을 client2/
저장소를 생성하고, 변경한 내용을 병합해 보겠습니다.
client2 저장소 만들기
client2/
폴더를 생성하고, Git 저장소를 초기화합니다.
cd ..
mkdir client2
cd client2
git init
client2/
저장소에서 remote/
저장소를 원격 저장소로 설정합니다.
git remote add origin ../remote/
이제 client2/
저장소에서 원격 저장소의 변경 사항을 가져올 수 있습니다.
git pull 사용하기
원격 저장소의 변경 사항을 client2/
저장소로 가져와서 병합합니다.
git pull origin main
client2
폴더에 client/README.md
파일이 추가되어 있는것을 확인할 수 있습니다.
git fetch 사용하기
git fetch
는 원격 저장소의 변경 사항을 로컬 저장소로 가져오지만, 자동으로 병합하지 않습니다. 이렇게 가져온 변경 사항은 원격 저장소의 브랜치를 추적하는 로컬 브랜치로 저장됩니다. 따라서 git fetch
를 실행한 후에는 수동으로 변경 사항을 병합해야 합니다.
client
폴더에서 작업을 수행합니다.
cd client
README.md
파일의 내용을 추가합니다.
echo "추가사항" >> README.md
변경된 내용을 스테이징하고 커밋합니다.
git add README.md
git commit -m "README.md 파일 변경"
변경 사항을 원격 저장소 remote
에 푸시합니다.
git push origin main
client2
폴더로 이동합니다.
cd ../client2
이제 client2
폴더에서 git fetch
를 사용하여 원격 저장소의 변경 사항을 가져올 준비가 되었습니다.
원격 저장소의 변경 사항을 가져옵니다.
git fetch origin
원격 저장소의 변경 사항을 로컬 브랜치와 병합합니다.
git merge origin/main
이제 client2
폴더에 있는 로컬 저장소는 원격 저장소의 변경 사항을 반영한 상태입니다.
아래 명령으로 client
에서 변경한 내용이 병합되었는지 확인합니다.
cat README.md
결론
지금까지 Git의 원격 저장소를 설정하고 관리하는 방법과 원격 저장소와 로컬 저장소 간의 동기화를 위한 git push, git pull, git fetch 등의 명령어를 살펴보았습니다. 또한, 리모트와 클라이언트 폴더를 사용한 예제를 통해 실제 작업 과정을 공부해 보았습니다. 이러한 기본적인 원격 저장소 사용 방법을 익혀두면 협업이나 프로젝트 관리에 큰 도움이 될 것입니다. Git 원격 저장소 기능을 활용하여 다양한 프로젝트에서 원활한 협업과 효과적인 버전 관리를 이루시길 바랍니다.
댓글