본문 바로가기

Git & GitHub

[GITHUB]사용법

Github에 내 로컬 repository를 Publish하기

먼저 Github Desktop을 열어서 올리고싶은 main브렌치로 위치를 이동한다.

 

이동헀으면 옆에 Publish repository 버튼을 클릭한다.

디폴드값으로 keep the code private 가 체크가 되어있는데 언체크 해줘야 public 이 된다. 여태까지 만든 repository는 local 컴퓨터 안에 있는 repository였던것이다. 비로소 publish를 해야 github 에 올라가게 되는것이다.

여태 만들었던 파일들이 착착착 올라간걸 확인할 수 있다. 또한 6commits를 클릭하면 여태 내가 커밋한 history를 볼 수 있다.

 

 

 

 


 

 

 

Github에 내 로컬 repository Push하기 (README.md 올리기)

 

근데 README.md파일이 없어서 남들이 볼때 설명이 충분치 않은 repository가 된다. README.md(마크다운)파일을 하나 만들어서 커밋하고 푸시해보자~!!

 

먼저 비주얼 스튜디오에서 working directory에서 README.md파일을 만들어주고 안에는 마크다운 문법으로 원하는 내용을 적는다.

파일이름은 README 이어야 한다 다르게 하면 깃허브가 몰라본다....

Github Desktop을 사용해서 커밋해보자

근데 커밋하고 끝나는게 아니다. 내 로컬 컴퓨터 안에서는 다 알잘딱으로 다 되었지만 깃허브에는 아무것도 올라간게 없다. 클라우드 서버에 데이터를 PUSH해주어야 비로소 내가 커밋한게 올라간다는것이다.

상단 바에 Push origin 버튼이 있는데 얘를 눌러줘야 클라우드에 내가 만든 README.md가 올라간다.

 

깃허브 repository로 가보니깐 내가 만든 README.md파일이 잘 올라가고 아래 마크다운 페이지가 잘 보이는걸 확인할 수 있다.

 

 

 

 

 

 


 

 

 

Github 다른사람꺼 Fork 하기 (포킹하기)

 

Forking은 git의 기능이 아니라 Github의 기능이다. Fork의 기능은 repository를 통째로 복사한다. 난 이번에 교수님 repository를 하나 복사해봤다. 

디자인 패턴 과목을 하나 포킹했는데 내 아이디/DesignPattern으로 만들어지고 forked from "포킹한 원본위치"가 뜬다.

포킹은 잘 해서 내 repository마냥 쓸려는건 잘 하겠는데 이걸 내 로컬 컴퓨터로 불러와야 한다. Github Desktop을 다시켜서 사용하자.

 

먼저 버튼에 Current Repository버튼을 클릭 -> Add -> Clone Repository...클릭한다. 이는 그냥 클라우드상에 있는 깃허브 repository를 복사해서 내 로컬컴퓨터 repository로 쓰는거다.

누르면 아래와 같이 뜨는데 방금 깃허브에서 포킹해서 내 깃허브 페이지에 만들어진 DesignPattern 레파지토리가 보인다. 잘보이는 Desktop/ 아래에 working directory를 설정해준다. 잘보이는곳에다 두자~!!!!

그러면 finder로 함 Desktop/ 아래를 보면, 잘 생성된걸 볼 수 있다.

 

 

 

 

 

 


 

 

 

 

Pull Requests

인제 포킹해서 다른사람 코드를 통째로 클론한다음 내 컴퓨터에 working directory에 넣고 작업을 하는것까지 알아봤다. 인제 포킹한 내용물들을 씹고뜯고맛보고즐긴다음 내가 포크해온 그 분의 repository에 합쳐(merging)해달라고 요청해야한다. 물론 일을 이런식으로 한다는 뜻이다.

내가 포킹한 레파지토리가 어딘지 까먹었다면, 포킹할때 내 레파지토리로 생성될때 제목아래 링크를 붙여주기 때문에 잊어먹을 일이 없다.

 

들어오면 아래 메뉴바에 Pull requests 버튼이 보인다. 여기들어가면 이런게 나오는데

정신이 없는 페이지가 나오는데 저 초록색 버튼 New pull request를 클릭해준다. 이게 뭔뜻이냐면 상대방이 내가 만지작 거린 repository를 자신이 "끌어서(PULL)" 머징해줘야 하기 때문에 난 "끌어주길 바라요"를 "요청" 하는것이기 때문에 Pull Request가 된것이다.

위에 있는 동그라미친 compare across forks 를 클릭하면 

이렇게 내가 가지고있는 repository들 중에서 바뀐 코드들을 비교하게 할 수 있다.~!!!! 근데 난 뭐 수정한게 하나도 없어서 There isn't anything to compare라고 뜨는것이다. 아무것도 비교할게 없기 때문이다. 만약 수정한게 있다면 Pull request를 보낼 수가 있다.

 

 

 

 

 

 


 

 

 

 

 

Origin 과 Upstream

origin은 내가 포킹해서 만든 내 깃허브 repository이고 upstream은 내가 포킹한 상대방의 repository를 의미한다. 근데 이게 왜 중요하냐면 내가 포킹한분의 repository가 수정되어서 최신본이 나왔다가 치자. 그러면 난 구버전을 포킹했기때문에 구버전에서 작업을 하고있을것이다. 따라서 수정된 신버전을 받아와야하는데 Github Desktop은 너무나 고맙게도 버튼 클릭 한번으로 해결해준다. Fetch origin 버튼을 클릭하면 된다. Fetch upstream 버튼이 아니고? 사실 Fetch origin 버튼을 누르면 빠르게 여러 말들이 지나가면서 Fetch upstream도 살짝 보이면서 패치를 마쳤다고 한다. 즉 저걸 누르면 내 깃허브 repository(origin)와 마스터의 마스터격인 포킹된 repository(upstream)를 Fetch 해준다. 근데 말그대로 Fetch는 "잡다" 란 뜻이다. 이걸 내 작업물에 병합(Merge)해주어야한다. 

other branches에 upstream/master가 있는게 보인다. 저게 내가 포킹한 오리지널 본체다. 저걸 내 origin마스터에 병합을 시켜줘서 내 origin 마스터가 최신상태가 되도록 해야한다. 다시 잊어먹을 수 있는데 upstream이 origin의 부모라고 생각하면 편하다. master를 클릭하고 choose a branch to merge into master를 클릭한다. "master"에 머징할 게 뭐냐고 물어본거다.

 

그러면 이렇게 위와같이 뜨는데 this branch is up to date with update/master라고 뜨는데 이게 왜이러냐면 upstream코드가 바뀐게 없어서 내 origin 마스터에 넣어줄 커밋들이 없기 때문이다. 그래서 버튼이 비활성화 되있다..... 만약 upstream에 최신 커밋이 있고 내 origin에 병합을 했다면 push origin 버튼이 활성화 될거다. 그때는 작업을 더 하고 푸시를 하거나 원할때 다시 origin에 푸시하면 된다. 여튼 upstream에서 내 origin을 병합을 통해 최신상태로 유지하는법을 알게 되었다.

'Git & GitHub' 카테고리의 다른 글

Github Desktop 깃허브 데스크탑  (0) 2021.06.28