'헬로우 월드' 프로젝트는 컴퓨터 프로그래밍 분야에서는 전통있는 일종의 통과의례(?)같은 것입니다.

무언가 새로운것을 배울때는, 이런 간단한 프로젝트가 여러분이 시작할때 좋습니다. 

자그럼 'Github'를 시작해 볼까요? 


여러분이 배울 내용

 - 레포지토리(repository) 를 만들고 사용하기.

 - 새로운 브런치(branch)를 시작하고 관리 하기.

 - 파일을 변경한 후에 커밋(commit)함으로써 Github에 푸시(push)하기.

 - 합치기 요청(pull request)를 생성하고 합치기.


깃허브란 무엇인가요? 


깃허브는 버전관리와 협업을 하기 위해서 컴퓨터 코드를 제공하는 플랫폼 입니다. 여러분과 다른 사람들이 떨어져 있어도 한 프로젝트에서 협업 할수 있도록 도와줍니다.

이번 튜토리얼은 여러분들에게 깃허브의 핵심 요소인 코드저장소(repositories), 브랜치(branches), 커밋(commits), 합치기 요청(pull request)에 대해서 알려줍니다. 여러분은 여러분만의 Hello World 저장소(repository)를 만들고 깃허브의 합치기 요청(pull request)의 작동 흐름에 대해서 배울 것입니다. 한번 해보고 다시 검토하는 방식으로 해보려 합니다.

코딩은 몰라도 되요

이번 튜토리얼을 완수하기 위해서 여러분은 Github.com의 계정과 인터넷이 필요합니다.(이글을 읽고 있다면 인터넷은 준비된 셈이군요!) 일단 여러분은 코딩을 어떻게 하는지, 커맨드창을 어떻게 쓰는지, Git을 어떻게 설치하는지 일단은 알 필요가 없습니다.

- 팁 : 이 가이드를 모니터의 왼쪽 절반에 띄워놓고 오른쪽에는 깃허브를 열어서 따라해 보시면 수월하다는건 안비밀!


1단계. 저장소(repository) 만들기


저장소는 일반적으로 한개의 프로젝트를 만들기 위해서 사용됩니다. 저장소에는 폴더나 파일, 이미지, 비디오, 엑셀파일, 데이터세트 같은 여러분이 프로젝트를 하는데 필요한 어떤 파일이든 둘수가 있습니다. 일반적으로는 저장소 안에 README 라는 이름을 가진 파일을 만들고, README 파일 안에 프로젝트에 대한 정보를 적어 둡니다.  GitHub를 사용하면 새 저장소를 만드는 동시에 README파일을 쉽게 추가 할 수 있습니다. 또한 라이센스 파일과 같은 다른 공통 옵션도 제공합니다.

여러분의 hello-world 저장소는 여러분의 생각이나 자료를 저장하는 공간이 될 수도 있고, 또한 다른 사람과 무언가를 공유하거나 토의하는 공간이 될수도 있습니다. 


새로운 저장소 만들어보기

1. 오른쪽 상단의 여러분의 상징 이미지(?) 옆에 있는, +버튼을 클릭한 다음 새로운 저장소[New repository]를 선택합니다.

2. 여러분의 저장소 이름을 hello-world 로 설정해 보세요.

3. 짧은 설명도 곁들여 보겠습니다.

4. README 파일과 함께 저장소를 초기화 하기[Initialize this repository with a README]를 선택하세요


저장소 만들기[Create repository] 를 클릭하세요.


2단계. 브렌치(Branch) 만들기


브렌치는 저장소의 여러가지 버전을 동시에 작업하는걸 말합니다.

기본적으로 당신의 저장소는 최종 브런치인 마스터[master]라는 하나의 브런치를 가지고 있습니다. 여러분은  마스터 브런치에 커밋(반영) 하기 전에 실험용 코드를 만들어 보는등의 변화를 만들 수 있습니다. 

마스터 브렌치에서 브렌치를 하나 만들면, 새로 만든 브렌치는 그 시점의 마스터 브랜치의 복사본을 만든다는 것입니다. 여러분이 여러분의 브렌치에서 작업을 하는 동안, 다른 장소에 있는 누군가가 마스터 브렌치를 업데이트(변경)한다면, 여러분은 해당 업데이트를 가져올 수 있습니다. 


아래의 그림은 다음의 사항들을 보여줍니다. 

 - (최종 코드인) 마스터(master) 브렌치 

 - 피쳐 (feature)라는 새로운 브렌치 

 - '피쳐'가 '마스터'에 합쳐지기 전까지의 과정


여러분은 다른 버전의 파일들을 아래 처럼 저장해본적이 있나요? 

 - 완성.txt

 - 완성_수정.txt

 - 완성_수정2.txt

 - 완성_수정2_검토.txt

브렌치(branch)들은 비슷한 역할을 저장소(repository)에서 수행합니다.


깃허브에서 개발자나 디자이너는 버그수정을 하거나 마스터 브렌치(배포 프로그램)와 별도로 기능을 개발하기 위해서 브렌치를 사용합니다. 

변경 내용(ex.새로운 기능)이 준비되면 분기를 마스터로 병합합니다.


새로운 브렌치 만들기 

1. 여러분의 새로운 저장소인 hello-world 로 이동하세요.   

2. 파일 목록의 맨 위에있는 branch : master을 클릭하세요.

3. 텍스트 상자에  readme-edits라고 분기 이름을 입력하세요.

4. 파란색 [Create branch] 상자를 선택하거나 키보드에서 엔터키를 누르세요.


이제 master 및 readme 편집의 두 가지 분기가 있습니다. 이 두개는 아직 똑같아 보이지만 곧 달라질겁니다.
자 이제 새로운 브런치를 좀 다르게 만들어 보겠습니다.


3단계. 변경사항을 만들고 커밋하기.


여러분은 이제 master의 사본인 readme-edits 브런치에 대한 코드를 마주하고 있습니다. 몇 가지 사항을 수정 해 보겠습니다.

깃허브에서 저장된 변경 사항을 커밋(commit)이라고 합니다. 다시 말하면, 뭔가 새롭게 추가된 내용들이죠. 
각 커밋에는 변경된 사항과 관련된 메시지가 있으며, 메시지는 특정 변경이 이루어진 이유를 설명합니다. 
커밋 메시지는 변경 기록을 남겨두므로 다른 작성자가 여러분이 수행한 작업과 그 이유를 이해할 수 있습니다. 


변경하고 커밋하기

1. README.md 파일을 클릭하세요.

2. 편집 할 파일의 오른쪽 상단 구석에있는 연필 아이콘을 클릭하십시오.

3. 에디터에서 여러분에 대해서 간단히 적어보세요. 

4. 당신이 변경한 사항에 대해서 커밋 메시지를 적어보세요.

5. [Commit changes] 버튼을 클릭하세요.


이러한 변경 사항은 readme-edits 브렌치의 README 파일에만 적용되므로 이제 readme-edits 브렌치에는 master와 다른 내용이 포함됩니다.


4단계. 당겨짐 요청(Pull Request) 생성하기


수고하셨습니다~!
이제 master의 브렌치에 변경된 사항이 있으므로 당겨짐 요청(pull request)를 열 수 있습니다.

당겨짐 요청은 GitHub의 공동 작업의 핵심입니다. 당겨짐 요청을 생성한다는 것은, 여러분이 변경한 코드을 제안하고 
다른 사람들이 여러분이 변경한 코드를 검토하고 끌어 와서 그들의 브렌치에 병합(merge)하도록 요청하는 것입니다.
당겨짐 요청은 두 브렌치의 차이점을 표시합니다. 
변경, 추가, 제거된 내용들은 초록색이나 빨간색으로 표시됩니다.

커밋을 하는 즉시 당겨짐 요청을 생성하고 토론을 시작할 수 있습니다. 

당겨짐 요청 메세지 안에 있는 깃허브의 '멘션' 기능을 활용해서, 여러분은 지구 반대편의 어느 특정 사람이나 팀에게 피드백을 요청할 수 있습니다. 

여러분은 본인의 저장소에서 당겨짐 요청을 생성하고 직접 병합 할 수도 있습니다. 이런 방법은 대규모 프로젝트를 수행하기 전에 GitHub Flow를 배울 수있는 좋은 방법입니다.

README 파일에 대해서 당겨짐 요청(Pull Request) 생성하기

순서 

 화면

 [Pull Request] 탭을 클릭한 다음 [pull request] 탭에서 초록색 [New pull request] 버튼을 클릭하세요.

 


 여러분이 원본인 마스터 브렌치와 비교하기 위해 만든 브렌치인 readme-edits를 선택하세요.

 


 비교 페이지에서 여러분이 변경한 사항들을 살펴보고, 제출하려는 내용이 맞는지 확인하세요.

 


 제출하려는 변경 사항이 만족스럽다면, 초록색 [Create Pull Request] 버튼을 클릭하세요.

 


 당겨짐 요청에 제목을 쓰고, 변경 사항에 대한 간략한 설명을 작성하세요.

 


메시지 작성이 끝나면 당겨짐 요청 생성하기[Create Pull Request]를 클릭하세요~!

- 팁 : 여러분은 이모티콘 사용하거나 이미지를 댓글이나 Pull Requests에 끌어 놓을 수 있습니다.


5단계. 당겨짐 요청(Pull Request)을 합치기


이 마지막 단계는 여러분의 변경사항들을 합칠 순서 입니다. readme-edits 브런치를 마스터 브런치에 병합합니다.

 1. 초록색 당겨짐 요청을 합치기 [Merge pull request] 버튼을 클릭하여 변경 사항을 마스터에 병합합니다.

 2. 병합확인[Confirm merge] 버튼을 클릭합니다.

 3. 변경 사항이 통합되었으므로, 보라색 상자의 브렌치 삭제하기[Delete branch] 버튼을 클릭하여 브렌치를 삭제 합니다.


축하합니다~!

이로써 여러분은 깃허브에서 프로젝트를 만들고, 당겨짐 요청(pull request)를 하는 법을 배웠습니다! 킹왕짱 :)


이 튜토리얼에서 여러분이 수행한 작업은 아래와 같습니다.

 - 오픈 소스 저장소(repository) 생성

 - 새 브런치의 시작과 관리

 - 파일을 변경하고 이러한 변경 사항을 깃허브에 커밋하기

 - 당겨짐 요청(Pull Request)을 생성하고 합치기 


여러분의 깃허브의 프로필을 보면, 이제 여러분은 여러분의 새로운 초록색 '공헌 사각형'(contribution squares)을 볼수 있습니다.

당겨짐 요청 기능에 대한 자세한 내용은 GitHub Flow Guide를 읽는 것이 좋습니다. GitHub을 방문하여 오픈 소스 프로젝트에 참여해 봅시다.

- 팁 : GitHub을 시작하는 방법에 대한 자세한 내용은 다른 가이드, YouTube 채널 및 On-Demand 교육을 확인하십시오.


from. https://guides.github.com/activities/hello-world/


도움이 되셨나요?^^

깃허브의 흐름은 배포가 정기적으로 이루어지는 팀이나 프로젝트를 지원하는 간단한 브렌치(분기된 코드) 기반 작업 흐름 입니다. 이 가이드는 깃허브 흐름이 어떻게 작동하고 왜 그렇게 되는지 설명합니다.


브렌치(Branch) 생성하기

프로젝트를 진행할 때는 여러가지 기능이나 아이디어들이 작업 중일 겁니다. 그 중 일부는 완성본에 포함될 수도 있고 다른 일부는 포함될 준비가 되지 않았을 수도 있습니다. 브렌치는 이러한 작업의 흐름을 관리하는 것을 돕기 위해서 있습니다. 

프로젝트에서 브렌치를 만들면 새로운 아이디어를 시험해 볼 수있는 환경을 만들어진 것입니다. 브렌치에서 변경 한 사항은 마스터 지사에 영향을 미치지 않으므로 자유롭게 실험하고 변경 사항을 적용 할 수 있습니다. 브렌치는 함께 작업하는 누군가가 검토하기 전에는 메인 브렌치에 병합되지 않을 것이라는 점을 알고 있기에 안전합니다. 

 - 조언 한마디

브렌치는 Git의 핵심 개념이며 전체 깃허브 흐름은 이를 기반으로 합니다. 딱 한가지 규칙이 있다면, 마스터 브렌치의 모든 항목은 항상 배포가 가능하다는 점입니다. 

이런 점 때문에 새로운 기능을 만들때나 기능을 수정할때 새 브렌치(분기코드)를 마스터에서 복사하여 생성한다는 점이 매우 중요합니다. 다른 사람이 현재 내가 작업중인 것을 볼수도 있기 때문에, 브렌치 이름을 봤을때 작업을 이해할 수 있으면 좋습니다. (예를들면, 리팩터 인증, 사용자 콘텐츠 캐시 키, 레티나-아바타 만들기) 




커밋 추가하기

여러분이 브렌치를 만들었다면, 이제 뭔가 변경을 해볼 순서 입니다. 여러분이 파일에 뭔가를 추가,변경,삭제할 때마다, 커밋(commit)을 만드는 것이고 그것들을 여러분의 브렌치에 추가 할 수 있습니다. 커밋을 추가하는 이런 과정은 보통 feature라고 하는 여러분의 브렌치에서 작업 할 때 진행 상황을 추적합니다.

커밋은 다른 사람들이 여러분이 한 일의 내용과 그 이유를 이해할수 있도록 투명한 기록을 남기는 것입니다. 각 커밋에는 관련된 변경 메시지가 있으며, 이는 특정 변경이 이루어진 이유를 설명하는 글입니다. 또한 각각의 커밋은 개별적인 변경 단위로 간주됩니다. 이런점들은 버그가 발견되거나 다른 방향으로 가기로 한 경우 변경 사항들을 되돌릴(rollback;롤백) 수 있습니다. 

 - 조언 한마디

커밋 메세지는 특히 중요합니다. 특히 Git은 변경사항들이 서버에 합쳐질 때, 변경 사항을 추적하고 커밋으로 표시하기 때문에 중요합니다. 명확한 커밋 메시지를 작성하였다면, 다른 사람들이 커밋을 쉽게 이해하고 커밋에 대한 피드백을 제공 할 수 있습니다.




당겨짐 요청(Pull Request) 생성하기

당겨짐 요청을 생성한다는 것은 여러분의 커밋에 대해서 토론을 시작하는 것을 의미합니다. 커밋들은 기본적인 Git 저장소와 긴밀하게 통합되어 있기 때문에 검토자들이 여러분의 당겨짐 요청을 받아들이면 누구라도 어떤 변경 사항이 통합될지 볼 수 있습니다. 

여러분은 개발 과정 중에 언제든지 당겨짐 요청(Pull Request)을 생성할 수 있습니다. 즉 코드가 거의 없지만, 어떤 스크린 샷이나 좋은 아이디어를 공유하고 싶은 경우, 하다가 막혀서 다른 사람의 도움이나 조언이 필요한 경우, 또는 다른 누군가가 여러분의 작업을 검토해 주기를 바라는 경우등에 당겨짐 요청(Pull Request)을 생성할 수 있습니다. 당겨짐 요청 메세지에서 @멘션(@mention) 기능을 활용하면, 지구 반대편에 있는 특정 사람이나 팀에게도 피드백을 요청 할 수 있습니다. 

 - 조언 한마디

당겨짐 요청은 오픈 소스 프로젝트에 기여하고 공유 저장소에 대한 변경을 관리하는 데 유용합니다. 분기와 병합(Fork & Pull) 모델을 사용하는 경우, 당겨짐 요청은 프로젝트 관리자에게 여러분이 반영하고 싶은 변경사항들을 알리는 역할을 합니다. 공유 저장소 모델을 사용하는 경우,  당겨짐 요청은 제안된 변경 사항에 대한 코드 검토와 토론을 시작하는데 사용이 됩니다. 물론 변경사항이 마스터 분기에 병합하기 전에 말이죠. 




여러분의 코드를 검토하고 토론하기

당겨짐 요청이 생성되면, 여러분의 제안한 변경 사항을 검토하는 사람(혹은 팀)은 질문이나 의견이 있을 수 있습니다. 아마도 코딩 스타일이 프로젝트 지침과 일치 하지 않을 수도 있고, 단위 테스트가 없거나, 아니면 정말 잘했다고 하거나 장점들을 나열 할지도 모릅니다. 당겨짐 요청은 이런 유형의 대화를 장려하도록 설계되었습니다. 

또한 커밋에 대한 토론과 피드백을 토대로 계속해서 여러분의 브렌치에 추가(push)할 수 있습니다. 누군가 당신이 뭔가를 놓쳤다고 하거나 코드에 버그가있는 경우 여러분의 브렌치에서 수정하고 변경 사항을 적용 할 수 있습니다. 깃허브는 "통합 당겨짐 요청화면"에서 새로운 커밋과 추가 피드백을 보여줍니다.

 - 조언 한마디

당겨짐 요청 댓글은  Markdown에 작성되고, 이모티콘이나 이미지를 넣거나 미리 작성된 간단한 텍스트 블록이나 간단한 서식을 사용할 수 있습니다.




배포하기

일단 당기기 요청이 검토가 되고, 브렌치가 테스트를 통과하면, 여러분은 여러분의 변경사항들을 배포하여 실운영(제품) 환경에서 확인해볼 수 있습니다. 여러분의 브렌치에서 문제가 발생하면 기존 마스터 브렌치를 실 운영(제품)에 다시 배포하여 롤백(되돌림) 할 수 있습니다.




통합하기

현재 변경 사항이 운영(제품) 환경에서 확인되었으므로 코드를 마스터 분기에 병합해야합니다.

병합되면, 당기기 요청은 코드의 변경 기록들을 보존합니다. 기록들은 검색 가능하기 때문에, 언제 어디서나 결정을 내린 이유와 방법을 이해할 수 있습니다.

 - 조언 한마디

특정 키워드를 당겨짐 요청에 있는 텍스트와 연결해 봄으로써 여러분은 발생한 이슈와 연관된 코드를 찾을 수도 있습니다.  당겨짐 요청이 병합되면 관련 문제(issue)도 닫힙니다. 예를 들어 Closes #32 라고 입력하면, 저장소에 있는 32번 문제(이슈)가 종료됩니다. 더 자세한 내용은 도움말을 확인해 보시기 바랍니다.

from. https://guides.github.com/introduction/flow/

도움이 되셨나요?^^

+ Recent posts