Love Every Moment

〔GITHUB〕초보자를 위한 깃허브 사용법 (2) - 원격 저장소 본문

PROGRAMMING::ETC/GIT

〔GITHUB〕초보자를 위한 깃허브 사용법 (2) - 원격 저장소

해 송 2021. 2. 9. 23:12
반응형

 

 

1.  깃허브 원격 저장소

 

(1) 포크(Fork)         다른 사람의 저장소를 복사하는 기능

(2) 풀 리퀘스트(Pull Request)      포크한 저장소를 수정해 다시 원본 저장소에 병합해달라는 요청 보내기

(3) 이슈(Issues)        저장소 안에서 사용자들 사이의 문제 논의하기

(4) 위키(Wiki)          저장소와 관련된 체계적인 기록 남기기

 


 

2.  원격 저장소의 모든 내용을 로컬 저장소로 복사

 

git clone    https://github.com/사용자이름/원격저장소이름.git

(1) 내가 생성한 원격 저장소를 내 컴퓨터와 연결해서 데이터를 복사하는 작업 또는

(2) 포크한 원격 저장소를 내 컴퓨터와 연결해서 데이터를 복사하는 작업을 의미

'origin' 은 원격 저장소의 별명으로 클론을 이용하면 자동으로 저장소 이름을 origin 으로 짓는다.

 

새로운 빈 로컬 저장소를 생성하고 기존에 작업한 원격 저장소를 복사해 가져와보자.

mkdir github_tutorial  →  cd github_tutorial    git clone "깃허브 저장소 주소"  →  cd study  →  git status

 

 


 

3.  로컬 저장소를 특정 원격 저장소와 연결

 

git remote add    저장소별칭(ex. origin)   https://github.com/사용자이름/원격저장소이름.git

 

기존에 이미 작업해놓은 로컬 저장소가 있는 경우 빈 원격 저장소와 연결하게 해준다.

주의: 절대 README.md 파일을 생성해서는 안 된다!

 

깃허브에 새로운 빈 원격 저장소를 생성하고 기존에 작업한 로컬 저장소와 연결해보자.

git remote add origin https://github.com/S0YKIM/GITHUB.git    →    git remote  -v

 


 

4.  로컬 저장소에서 작업한 내역을 원격 저장소에 올리기

 

git push   원격저장소별칭   로컬브랜치이름

 

백지 상태인 원격 저장소에 로컬 저장소에서 작업한 모든 브랜치를 푸시해보자.

git push origin --all                    →   origin 저장소에 로컬의 모든 브랜치를 푸시하기

 

로컬 저장소에서 README.md 파일을 추가하고 변경 내역을 푸시해보자.

cat >> README.md 내용 입력  git add README.md  →  git commit -m " "   git push origin master

 

* 만약 README.md 파일을 hotfix 브랜치에 추가하고 싶다면 로컬 저장소에서 병합한 다음 푸시하면 된다.

 


 

5.  로컬 저장소와 원격 저장소의 간격 메꾸기

 

(1) git pull       원격 저장소의 정보를 로컬 브랜치에 페치하고 병합하는 과정까지 모두 수행

 

로컬 저장소의 작업을 푸시하였으나 [rejected ~] 실패 메시지를 보았다면 이를 이용하여 해결할 수 있다.

하지만 어떤 내용이 병합되면서 바뀌게 되었는지 알 수 없기 때문에 추천하지 않는 방법이다.

git pull origin master         →      fetch + merge 명령을 이미 수행하였으므로 커밋하거나 병합할 필요 없음

 

 

(2) git fetch      원격 저장소의 정보를 로컬 저장소에 가져오며 직접 파일 내용을 수정하여야 병합 가능

 

git merge 명령을 실행하면 [CONFLICT ~] 충돌 메시지를 보게 되므로 이를 수정할 차례이다.

git diff 명령을 통해 로컬 저장소의 브랜치와 원격 저장소의 브랜치 사이에 어떤 차이가 있는지 미리 알아볼 수 있다.

이를 참고하여 로컬 저장소의 hello.py 파일을 파이썬으로 실행하여 직접 수정하고 커밋한다.

마지막으로 로컬 브랜치를 푸시하고 깃허브에서 제대로 푸시되었는지 확인한다.

*  [Insights]  -   [Network]  을 클릭하면 해당 브랜치의 변경 내역을 그래프로 볼 수 있다.

 

깃허브와 로컬 저장소에서 각각 수정하여 다른 커밋을 가지고 있어 충돌이 발생한 파일을 푸시해보자.

git fetch  →  git status  git branch -a  혹은  git merge [Tab]  →  git merge origin/master   git diff   hello.py 내용 수정  →  git commit -am "conflict solved"    →   git push origin master

 

 

※ 이 글은 <만들면서 배우는 Git + Github 입문> 을 참고하여 작성되었습니다.

 

 

키워드 컴퓨터 프로그래밍 코딩 교육

반응형
Comments