✅ Remote Repository
리모트 저장소를 관리하는 방법에 대해 알아보겠습니다. 리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 의미합니다. 저장소는 여러 개가 있을 수 있으며, 일부는 읽기 및 쓰기가 가능한 반면 일부는 읽기 전용일 수도 있습니다. 함께 일하기 위해서는 리모트 저장소를 관리하며 데이터를 Push하고 Pull하는 것이 필요합니다. 리모트 저장소 관리에는 저장소의 추가, 삭제뿐만 아니라 브랜치 관리와 추적 여부 설정 등이 포함됩니다. 이제 리모트 저장소를 관리하는 방법에 대해 자세히 설명하겠습니다.
🔹GitHub Repository 생성하기
- New Repository
새로운 GitHub의 저장소를 생성합니다.
Repository의 이름을 입력하고, README file을 추가하지 않고 빈 Repository를 생성합니다. README file을 추가할 경우, 해당 REpository를 초기화하여 Head 포인트까지 생성되므로 더 간편할 수 있지만 학습을 위해 우선 넘어가겠습니다.
HTTPS 타입의 github 주소를 복사하면 준비가 완료되었습니다. 이제 github에서 Remote Repository를 Clone하고 진행해보겠습니다.
🔹Remote Repository 연결
- git으로 관리할 공간으로 이동
Remote Repositroy를 로컬에서 관리할 공간으로 이동합니다. 저는 프로젝트 폴더가 모여있는 곳으로 이동하였습니다.
- Remote Repository 복사 -Clone
git clone [GitHub Repository URL] git clone https://github.com/jhcode33/GitTest.git
Remote Repository를 복사하여 로컬 환경에 준비합니다. URL은 GitHub에서 복사한 URL을 사용하면 됩니다. 복사하여 붙여 넣을 때는 우클릭 → Paste를 사용해야 합니다. ctrl + c 가 먹히지 않습니다.
비어있는 repository를 가져왔다고 출력됩니다. 어떠한 파일도 저장하지 않았기 때문입니다. 만약 Remote Repository에 저장하고 있던 파일이 있다면 다운로드될 것입니다. 해당 경로에 .git 폴더만 있는 GitTest 폴더가 생성되었음을 확인할 수 있습니다. 이제 해당 경로로 이동하여 진행해보겠습니다.
cd GitTest
- 등록된 리모트 저장소 확인하기 -git remote -v
git remote -v
-v
옵션을 주어 단축이름과 URL을 함께 볼 수 있습니다. origin은 별칭이고, 별칭은 너무 긴 URL을 간편하게 쓰기 위해 사용됩니다. 만약 리모트 저장소를 여러 개 참조하고 있다면 등록된 모든 저장소를 보여줍니다. 현재는 origin 밖에 등록되어 있지 않습니다.
- 등록된 리모트 저장소에 push 준비
push하기 위해선 반드시 HEAD 포인트가 필요합니다. 뒤에서 자세히 배우겠습니다. 그래서 먼저 README.md 파일을 생성하고 commit 해보겠습니다.
echo >> README.md git status git add README.md git commit -m "add README.md"
- 등록된 리모트 저장소에 push -git push origin main
git push [별칭] [브랜치명] git push origin main
로컬 저장소에서 업데이트한 내용을 Remote 저장소(GitHub)에 업데이트 하고 싶을 때 사용합니다. GitHub에서 확인하면 정상적으로 올라간 것을 볼 수 있습니다.
🔹git Fectch, Merge, Pull
해당 실습을 위해서 github에서 파일 하나를 추가하겠습니다.
github에서 hello.txt 파일을 추가했기 때문에 로컬 저장소와 리모트 저장소의 파일이 차이가 나게 되었습니다. 이를 어떻게 관리하는지 아래 명령어를 통해서 살펴보겠습니다.
- git fetch
git fetch는 리모트 저장소의 최신 변경 내역을 로컬 저장소로 가져오는 명령어입니다. 리모트 저장소의 변경 내역을 확인하고 로컬에 업데이트하지만, 로컬의 작업 내용은 변경되지 않습니다. fetch 명령을 실행하면 리모트 저장소의 최신 브랜치와 커밋들을 가져와 로컬 저장소의 "FETCH_HEAD"라는 참조를 업데이트합니다.
git fetch [URL 별칭] git fetch origin
git fetch 명령어는 리모트 저장소의 파일 데이터를 가지고 와서 로컬 저장소와 일치하는지 비교하는 역할을 합니다. 즉, 리모트 저장소에 파일이 추가되었다고 해서 로컬 저장소에 파일을 그대로 복사해주지는 않습니다. 단지 비교하기 위한 데이터만 가지고 옵니다.
- git merge
git merge는 가져온 변경 내역을 현재 작업 중인 브랜치에 병합하는 명령어입니다. merge 명령을 실행하면 Git은 가져온 변경 내역과 현재 브랜치의 커밋을 비교하여 자동으로 병합 작업을 수행합니다. 병합 작업 중에 충돌이 발생할 수 있으며, 이러한 경우에는 충돌을 해결하고 병합을 완료해야 합니다.
git merge [Remote URL] [branch name] git merge origin main
리모트 저장소인 "origin"의 "main" 브랜치의 변경 내역을 현재 작업 중인 브랜치에 병합하는 명령입니다. 즉, 새로운 파일이 있다면 해당 파일을 로컬 저장소에 복사해줍니다.
- git pull(=fetch + merge) Git Pull은 Fetch와 Merge를 동시에 수행하는 명령어입니다. Pull 명령을 실행하면 리모트 저장소의 변경 내역을 가져오고, 가져온 변경 내역을 현재 브랜치에 자동으로 병합합니다. Fetch와 Merge를 별도로 실행하는 것보다 간편하게 사용할 수 있습니다.
🏷️이미지 출처 및 참고한 사이트
Uploaded by N2T