Remote 저장소
는 Local 저장소와 연결되어 있어서 Local 저장소의 변경 사항을 공유 Push
하고 동기화 Pull (또는 Fetch)
하는 데 사용된다.
내가 Local 저장소에서 작업한 내용을 공유하는거를 Push
다른 사용자들이 공유한 내용을 내가 작업하는 Local 저장소로 가져와 업데이트하는거를 Pull
git remote add <remote_repo_name> <remote_repo_url> git remote add origin <remote_repo_url>
로컬 저장소와 동기화할 Remote 저장소를 등록하려면 git remote add
명령어를 사용하여 추가하면 된다. 이를 통해 로컬 저장소는 원격 저장소와 연결되어 변경 사항을 주고받을 수 있다.
로컬 저장소에 등록된 Remote 저장소는 다른 저장소와의 연결을 관리할 때 사용된다. 일반적으로 하나의 원격 저장소를 사용하지만, 필요에 따라 여러 개의 원격 저장소를 등록할 수도 있다. 이를 위해 원격 저장소에 고유한 이름을 지정하여 관리할 수 있다. 그러나 일반적으로 가장 중요한 원격 저장소에는 origin
이라는 이름을 사용하는 것이 일반적이다.
참고로 git clone
명령을 사용하여 저장소를 복제할 때는 자동으로 원격 저장소를 등록하며, 이 때 원격 저장소는 기본적으로 origin이라는 이름으로 등록된다.
등록된 원격 저장소의 주소가 잘못되었거나, 인증 정보 (token)을 포함하지 않아서 인증 문제가 발생하는 경우 원격 저장소의 주소를 수정할 수 있다. git remote set-url
명령어를 사용하여 이를 수행할 수 있다. 이 명령어는 원격 저장소의 이름과 새로운 URL을 지정한다.
git remote set-url <remote_repo_name> <remote_repo_new_url> git remote set_url origin <remote_repo_new_url>
등록된 원격 저장소의 이름을 수정하려면 git remote rename
명령어를 사용하여 원격 저장소의 이전 이름을 새로운 이름으로 수정할 수 있다.
git remote rename <old_name> <new_name>
git remote remove <remote_repo_name> git remote remove origin
원격 저장소에 등록된 이름과 URL 정보를 확인하려면 git remote -v
명령어를 사용한다. 이 명령어는 현재 설정된 원격 저장소의 이름과 URL을 보여준다.
git remote -v
주의해야 할 점은 원격 저장소에 인증 정보를 포함한 token을 등록하면 해당 정보가 노출될 수 있어 누구나 열람이 가능하다. 따라서 보안에 주의하여야 한다. 특히 개인 컴퓨터가 아닌 곳에서 작업할 때에는 토큰을 사용하는 것이 적절하지 않을 수 있다.
원격 저장소에 대한 자세한 정보를 확인하려면 git remote show
명령어를 사용한다. 이 명령어를 사용하여 특정 원격 저장소에 대한 자세한 정보를 확인할 수 있다.
git remote show <remote_repo_name> git remote show origin
이 정보에는 해당 원격 저장소의 URL, 추적되는 branch, 로컬에서 이 원격 저장소로 push와 pull할 때 기본 설정되는 branch 등이 포함된다.
이를 통해 현재 프로젝트에서 사용 중인 원격 저장소의 설정과 속성을 확인할 수 있다.
원격 저장소의 변경 사항을 로컬 저장소로 가져오는 작업을 Pull
이라고 한다. 이는 사실상 원격 저장소의 변경 내용을 로컬로 가져오는 과정인데, 이는 실제로 Fetch
와 Merge
과정을 수행한다.
git pull <remote_repo_name> <branch_name> git pull origin main
만약 현재 작업 중인 local branch가 main이라면, git pull
명령만으로도 기본적으로 origin/main
branch와 local main
branch를 동기화한다. 여기서 origin/main은 원격 저장소의 main branch를 의미한다. origin main
이 생략이 되었지만 git pull origin main
과 같은 동작을 하게 된다.
만약 로컬에서 다른 branch (dev)에서 작업 중이라면, 해당 branch의 변경 사항을 가져오기 위해서는 해당 branch를 명시적으로 지정해주어야 한다. 예를 들어, 현재 작업 중인 branch가 dev이고 이 branch를 원격 저장소의 dev branch와 동기화하려면 다음과 같이 명령한다.
git pull origin dev
이렇게 하면 원격 저장소에서 변경된 스냅샷을 로컬로 가져와서 해당 branch로 병합(Merge)한다. 이렇게 병합된 코드가 새로운 버전이 되는 것이다. 따라서 Pull은 실제로는 Fetch와 Merge 과정을 합친 것으로 볼 수 있다.
git fetch
를 실행하여 원격 저장소에서 변경된 스냅샷을 로컬로 가져온다. 이 과정에서 변경 사항을 다운로드만 받고, local branch에는 아무런 변경이 없다. 이 단계에서는 local branch에 변경 사항을 병합하지 않는다. 다만 원격 저장소의 최신 내용을 로컬에 업데이트한다.
git merge
를 사용하여 local branch와 remote branch를 병합한다. 이렇게 함으로써 원격 저장소의 변경 사항이 local branch에 반영된다.
위와 같은 과정을 거쳐서 원격 저장소의 변경 사항을 로컬로 통합하면, 로컬 저장소의 코드가 최신 상태가 된다.
git push
명령어는 반대로 로컬 저장소에서 작업한 내용을 원격 저장소로 업로드하여 다른 개발자들과 공유하는 작업이다.
git push <remote_repo_name> <branch_name> git push origin_main
git push
명령어를 사용한다.1) Terminal 실행
2) Query 입력
local_project % cd ..
git_ws % mkdir local_project
git_ws % cd local_project
local_project % git init
local_project % git status
로컬 저장소를 미리 만들어놓고 나중에 원격 저장소와 연동할 때, 원격 저장소는 비어있는 상태여야 한다.
1) GitHub 로그인
2) Repository name
입력
3) Private
선택
4) Create a new Repository
버튼 클릭
5) Add a README file
미선택
6) Add .gitignore
미선택
README file
및 .gitignore
을 미선택하면 위의 이미지와 같이 비어있는 remote repository 페이지가 생성된다.
1) 새로 생성한 Remote 저장소의 HTTPS 복사
https://github.com/yeji4175/local_project.git
2) 복사해둔 Token 준비
만약 token을 분실했을 시 새로 발급하면된다.
local_project % git remote add yeji4175 <URL>
local_project % git remote -v
git remove -v
명령을 통해 원격 저장소 정보를 확인해보면 기본값으로 fetch
와 push
할 때의 주소가 자동으로 등록되며 함께 표시된다.
또한, 원격 저장소 이름은 username 보다는 origin을 사용하는 것이 일반적이다. 이는 주로 사용하는 원격 저장소를 지정할 때 일관성을 유지하고 관리하기 쉽도록 하는데 도움이 된다. 만약 사용자가 여러 개의 원격 저장소를 다루는 경우에도 특정 작업에 origin이라는 이름을 사용하면 혼란을 줄일 수 있다.
local_project % git remote rename yeji4175 origin
local_project % git remote -v
원격 저장소에 대한 URL이나 인증 정보(token)를 수정해야 할 때는 git remote set-url
명령어를 사용해야 한다.
git remote add
는 원격 저장소를 새로 추가할 때 사용되며, 이미 등록된 원격 저장소에 대해 다시 추가할 수 없다. 따라서 URL 수정이 필요한 경우에는 git remote set-url을 사용하여 원격 저장소의 URL을 변경해야 한다.
local_project % git remote set-url origin <token@https://github.com/yeji4175/local_project.git>
local_project % git remove -v
로컬 저장소와 원격 저장소가 비어있는 경우에는 push 또는 pull할 변경 사항이 없으므로 먼저 로컬 저장소에 push할 변경 사항을 생성해야 한다.
local_project % touch readme.md
local_project % git add readme.md
local_proejct % git commit -m "add readme file"
local_project % git status
local_project % git push origin main
git push origin main
을 입력 후 GitHub를 새로고침하면 read.me가 업데이트가 되어있는걸 확인할 수 있다.
GitHub에서 Remote Repository에 push된 변경사항을 확인할 수 있다. 이를 통해 local에 작업한 commit이 원격 저장소에도 올바르게 적용되었는지 확인하는 작업을 해본다.
로컬에서 변경 사항을 commit하고 이를 원격 저장소로 push하면 main branch가 생성되고 readme.md 파일이 생성된걸 확인할 수 있다. 그리고 새로운 commit이 원격 저장소의 히스토리에 1개 기록된걸 확인할 수 있다.
1) 1 Commits
클릭
2) add readme file
클릭
해당 버튼을 클릭하면 더 상세한 정보를 볼수 있다.
1) GitHub 로그인
2) New
버튼 클릭
3) Repository name
입력
4) Private
선택
5) Add a README file
선택
6) Add .gitignore
미선택
7) Create repository
버튼 클릭
8) Remote repository 주소 및 token 준비
https://github.com/yeji4175/remote_project.git
1) Terminal 실행
2) Query 입력
local_project % cd ..
git_ws % git clone https://github.com/yeji4175/remote_project.git
git clone을 수행할 때 주소만 넣으면 알아서 복제해주는 줄 알았는데 username과 password를 물어봐서 GitHub의 username과 password인 줄 알았는데 password는 GitHub의 token을 얘기하는거였다.
이러한 상황이 나타날 때 username은 GitHub의 username을 작성하고 password는 token을 작성하면 잘 복제가 된다.
git_ws % cd remote_project
remote_project % git status
remote_project % git remote show origin
1) README.md 파일 옆 연필
버튼 클릭
2) Edit
의 하단에 query 입력
remote 정보 확인
# remote_project git remote show origin
3) Preview
버튼 누르면 미리보기
4) Commit changes..
버튼 클릭
README.md 파일을 수정해서 commit을 해서 버전 올려줬다는 의미이다.
1) Commit changes 팝업창에서 Commit message
입력
2) Commit changes
버튼 클릭하여 commit 완료
< > Code
클릭 시 Commit history를 볼 수 있는 페이지에서 해당 저장소의 버전이 하나 증가된 것을 확인할 수 있다.
Local과 remote 저장소의 버전 상태가 달라졌다. Local 저장소를 remote 저장소의 최신 버전으로 업데이트할거다.
remote_project % git pull origin main
README.md 변경 사항을 반영해준걸 확인할 수 있다.
remote_project % git log --oneline
git log
를 통해 Update README.md
가 추가 되어있는걸 확인할 수 있다.
local 레파지토리에서 readme를 확인해보면 아까 수정한 내용이 반영이 되어있는 걸 확인할 수 있다.
1) +
버튼 클릭하여 Create new file
클릭
2) remote_project의 파일 이름을 test.txt
로 입력
3) 파일 내용을 This is pull test.
입력
4) Commit changes.. 버튼 클릭
5) Commit message
입력
6) Commit changes
버튼 클릭
7) GitHub 페이지 새로고침
8) History 버튼 클릭
Local과 remote의 버전이 달라진걸 확인할 수 있다.
이 상태에서 remote꺼를 local에 반영해보겠다.
remote_project % git pull origin main
remote_project % git log --oneline
Pull을 하여 Create test.txt
가 추가된걸 확인할 수 있다.