Git에서 특정 Remote 서버와 싱크 맞추기

Git에서 특정 Remote 서버와 싱크 맞추기

Git
Git에서 특정 Remote 서버와 싱크 맞추기
Author

gabriel yang

Published

December 18, 2024


Git은 여러 원격(remote) 저장소를 지원하는 강력한 분산 버전 관리 시스템입니다. 하나의 프로젝트에서 여러 remote 서버를 사용할 수 있기 때문에, 특정 remote 서버와 상태를 맞추는 일이 필요할 수 있습니다. Git에서 특정 remote 서버의 상태와 싱크를 맞추는 방법에 대해 정리합니다.

1. Git Remote 서버 확인하기

먼저, 프로젝트에서 사용 중인 remote 서버 목록을 확인해야 합니다. 이를 위해 git remote -v 명령어를 사용합니다. 이 명령어는 프로젝트에 등록된 remote 서버 목록과 해당 서버들의 URL을 표시합니다.

git remote -v

출력 예시:

origin  https://github.com/username/repo.git (fetch)
origin  https://github.com/username/repo.git (push)
upstream https://github.com/anotheruser/repo.git (fetch)
upstream https://github.com/anotheruser/repo.git (push)

위 예시에서는 originupstream 두 개의 remote 서버가 등록되어 있습니다.

2. 특정 Remote 서버의 상태 확인하기

특정 remote 서버의 상태를 확인하려면 git fetch 명령어를 사용합니다. git fetch는 원격 저장소의 최신 정보를 로컬로 가져오지만, 작업 중인 브랜치를 업데이트하지는 않습니다. 원격 저장소의 상태만 확인하는 데 유용합니다.

git fetch origin

origin은 특정 remote 서버의 이름입니다. 다른 remote 서버를 확인하려면 이름을 바꿔 사용하면 됩니다.

3. Remote 서버의 상태를 로컬 브랜치와 싱크 맞추기

로컬 브랜치와 remote 서버의 상태를 싱크 맞추기 위해서는 git pull 명령어를 사용합니다. git pull은 원격 저장소에서 최신 변경사항을 가져오고, 현재 로컬 브랜치에 병합합니다.

git pull origin main

여기서 origin은 remote 서버의 이름이고, main은 싱크를 맞추고자 하는 원격 브랜치의 이름입니다. 이 명령어를 실행하면 origin/main 브랜치의 변경 사항을 현재 작업중인 로컬 브랜치에 반영할 수 있습니다.

만약 현재 작업중인 브랜치가 아닌 다른 브랜치에 적용하기 위하는 경우 아래의 명령으로 적용할 로컬 브랜치 정보를 추가합니다.

git pull origin <remote_branch>:<local_branch>

4. 원격 서버와 로컬 브랜치 상태 확인하기

특정 remote 서버와 로컬 브랜치의 상태를 비교하려면 git diff 명령어를 사용할 수 있습니다. 원격 브랜치와 로컬 브랜치 간의 차이를 확인하려면 다음과 같이 사용합니다.

git diff origin/main

위 명령어는 origin/main 브랜치와 현재 로컬 브랜치 간의 차이점을 보여줍니다.

5. 로컬 브랜치의 변경 사항을 특정 Remote 서버에 Push하기

로컬에서 작업한 변경 사항을 특정 remote 서버에 반영하려면 git push 명령어를 사용합니다. 예를 들어, origin 서버의 main 브랜치에 변경사항을 푸시하려면 다음 명령어를 사용합니다.

git push origin main

6. Remote 서버와 싱크를 맞추는 고급 옵션

원격 저장소에서 로컬 브랜치와 싱크를 맞추는 데 유용한 몇 가지 고급 Git 명령어를 소개합니다.

  • git fetch –all: 모든 remote 서버에서 변경 사항을 가져옵니다.

    git fetch --all
  • git reset: 원격 서버와의 싱크를 맞추면서 현재 작업중인 로컬 브랜치의 변경 사항을 버릴 때 사용합니다.

    git reset --hard origin/main

    이 명령어는 origin/main의 상태로 현재 작업중인 로컬 브랜치를 강제로 리셋하며, 로컬에서 변경된 사항은 모두 사라집니다.