이 글에서는 remote가 바라보는 url을 얻어오는 remote get-url 명령어에 대해 알아보겠습니다. 해당 명령어는 이 문서를 참고하시면 좋을 듯 싶습니다.
처음에 저는 gitlab에서 git_practice라는 빈 프로젝트를 만들었습니다.
위의 명령어 대로 수행하면 현재 폴더가 git_practice 레포지토리에 push가 되는데요. 제 깃랩 서버는 172.30.1.36이니, localhost 대신에 172.30.1.36이 들어간다는 것 빼고는 같습니다.
먼저, Users의 chokw 밑에 gitEx 밑에 git_example 폴더에서 작업을 하도록 하겠습니다.
요렇게 명령어를 입력해 주고 git init 명령어를 입력해 주면, 해당 폴더 밑에 git 폴더가 생성됩니다.
이렇게만 하고, git remote get-url --all origin 명령어를 입력해 보면, origin이라는 remote가 없다는 것을 알 수 있는데요. 로컬에 git 폴더가 추가가 되었을 뿐, 서버에 있는 gitlab의 레포지토리와 연동이 되지 않았기 때문입니다.
remote add origin이라고 하면, origin이라는 이름을 가진 remote를 생성한다는 의미인데요. 뒤에 http가 붙어 있습니다. 그러면, remote가 보고 있는 것은 http://~/cho/git_practice.git이라고 봐도 될까요? 이 명령어를 수행한 다음에, git remote get-url --all origin 명령어의 결과를 보면 알 수 있는데요.
이는, origin이라는 이름이 붙은 remote가 어떤 url을 보고 있는지 알려줍니다.
그리고 해당 폴더 밑에 있는 것들을 모두 add 합니다. 그리고 status를 보면, first_file.txt가 있음을 볼 수 있는데요. 파일 안에는 my first file 이라는 내용이 적혀 있습니다.
그리고, commit을 하면 로컬에 변경 사항이 올라갈 겁니다.
그리고, push를 하면, 바라 보고 있는 remote에도 해당 사항이 올라갈 겁니다. 저는 서버의 cho/git_practice를 보고 있었습니다.
잘 반영되었음을 볼 수 있습니다. gitlab이던 git이던, 어딘가에 쓰는 것이니, 어디에 어떻게 쓰는지 확인하는 습관을 들이는 것은 나쁘지 않습니다.
이제 아래 시나리오를 생각해 봅시다. 다른 폴더도 똑같은 remote를 바라본다. 다른 폴더에서, 해당 repository에 쓴다.
git_example_2 폴더를 만들었습니다.
똑같이 init를 하고, origin이라는 remote를 추가하는데, 보고 있는 url이 cho/git_practice_2.git입니다. 여기까지는 별 문제는 없어 보입니다. 그리고 해당 프로젝트는 제가 gitlab에 빈 프로젝트로 추가해 놓았습니다.
여기서, first_file.txt를 작성하였습니다. 여기에 작성된 내용은 git_example_two입니다.
그런데, 제가 origin이라는 이름을 가진 remote를 제거하고, 대신에, cho/git_practice.git을 가리키는 origin이라는 이름을 가진 것을 추가했다 해 봅시다. 그러면, gitEx/git_example_2 안에 있는 것이 가리키는 remote는 cho/git_practice.git일 겁니다. 아까와 마찬가지로, git_example_2 밑에 있는 모든 것들을 git add . 명령어를 통해서 tracking이 가능하도록 하고, commit을 한 다음에, 푸시를 해 보겠습니다.
그런데, -f 옵션을 줘도, remote reject라는 것이 뜹니다. 위에 보면 not allowed to force push code to protected branch가 뜨는데요. 브랜치가 protected가 되서 강제로 push를 하려고 해도 안 되는 모양새입니다. 저는, 시나리오 대로 실습을 할 것이므로, 해당 옵션을 풀어 보도록 하겠습니다.
gitlab에서 해당 프로젝트에 가서, setting 에서 repository를 눌러 보면, Protected Branches라는 것이 뜹니다. 여기서 뭔가 설정하는 듯 한데요.
Unprotect를 누르겠습니다. 그러면, Branch가 writable하게 된다고 경고창이 뜹니다. 확인을 눌러 줍시다.
그리고 push를 할 때 강제로 push 하는 -f 옵션을 넣어주면, remote에 잘 반영이 됨을 알 수 있습니다.
기본에, git_example을 서버에 올렸으니, first_file.txt에는 my_first_file이 있어야 할 겁니다.
그런데, git_example_two가 있음을 알 수 있습니다.
왜 그럴까요? git_example_2 폴더에서, remote get-url을 보면 알 수 있습니다. 리모트가 cho/git_practice.git을 가리키고 있었기 때문입니다. 정리하면, push를 하기 전에, 어느 위치에 쓰여지는지 한 번 더 확인하는 것은 나쁜 습관이 아니라는 겁니다. 이것 말고도, 이 질답글을 보면, 여러 방법이 있는 듯 하네요.
'GIT' 카테고리의 다른 글
git clone 명령어 : 원격 레포지토리를 로컬에 복제한다. (0) | 2021.07.23 |
---|---|
새로운 git branch를 생성해 봅시다. (0) | 2021.03.03 |
git status 명령어 : working tree의 상태를 본다. (2) | 2021.02.16 |
git checkout 명령어 : 내가 가리키는 브랜치를 이동한다. (2) | 2020.10.25 |
gitignore 파일에 있는 무시 패턴과 느낌표 패턴을 간단하게 알아봅시다. (1) | 2020.10.20 |
최근댓글