1단계: 새 프로젝트 초기화
명령줄에서 새 프로젝트/디렉토리 만들기
$ rails new github_guide
Github로 이동하여 rop 오른쪽 모서리에 있는 '+' 버튼을 클릭하고 'New Repository'를 선택하십시오.
그런 다음 리포지토리 이름과 설명 필드를 입력하십시오. Public 상태를 유지하고 "README로 이 리포지토리 초기화"를 누르지 않습니다.그리고 다른 옵션도 클릭하지 않고, Create repository 를 누릅니다.
다음은 설정 페이지 입니다. 방금 Github(원격)에서 작성한 Repo를 터미널(로컬)에서 작성한 디렉토리에 연결하기 위한 지시사항입니다.
커멘드라인에서 방금 만든 디렉터리로 이동 후, 복사한 커멘드라인을 터미널에 복사하여 붙여넣습니다.
이렇게 하면 repo에 '.git' 폴더가 추가되고 원격 Github Repo에 연결되며 '.gitignore' 파일도 제공됩니다.
그리고 Github Repo 페이지로 가면, 방금 생성한 ReadMe와 첫번째 커밋에 대한 내용을 볼 수 있습니다.
이제 Repo를 업데이트 하겠습니다. 터미널로 돌아가 git 추가, git 커밋 및 git 푸시를 합니다:
$ git add .
$ git commit -m "Second commit"
$ git push
이제 리포(repo)를 확인해 봅니다. 이 파일에는 새 커밋 ID(9c2e2f6)와 함께 로컬 디렉터리를 생성한 모든 파일이 포함되어있습니다.
이제 작업을 시작할 준비가 됬습니다!
팀을 Repo 에 추가해서 협업을 해야 하겠습니다. 일단 나의 팀이 협력자로 추가되면 팀원들은 Push, Merge, Pull Requests를 할 수 있습니다.
해당 Repo에서 "Settings" 탭을 누른 후 "Collaborators"를 누른 후 Gitub 사용자를 검색하고 "Add collaborator(협조자 추가)"를 눌러 추가합니다.
그러면, 협력자들은 내가 추가했다는 것을 알리는 이메일을 받을 것이고 협력자로 등록될 것입니다.
공동작업자인 경우 Github Repo 페이지, Git Clone project(프로젝트 복제) 및 cd를 사용해서 디렉토리로 이동하십시오. Fork는 하지않습니다! Forking은 해당 Repo를 내 깃헙으로 가지고 오는것입니다. 우리는 팀원들과 같은 Github Repo에서 협력하려고 하는것이기 때문에 Fork를 하지 않습니다.
$ git clone git@github.com:MinesJA/github_guide.git
$ cd github_guide/
이제 팀원들과 협력할 준비가 됬습니다!
여러 사람과 동일한 프로젝트를 수행하기 위해 git를 사용하는 경우 다음과 같은 규칙을 따라야합니다.
MASTER BRANCH는 항상 배포 가능한 상태여야 합니다!
Master BRANCH를 하상 배포 가능항 상태로 만들기 위해 새로운 Brnach를 생성하고 이 Brnach가 완료 되면 Master Branch로 병합할것입니다. 동작은 다음과 같습니다.
단계 3a: Branches
시작하려면 Brnach는 항상 features을 나타내야 합니다. 예를 들어 사용자가 로그인할 수 있는 기능을 추가하려면 "user_authentication"이라는 Branch를 만들어야 하며, 해당 Branch에는 사용자가 로그인할 수 있도록 하기 위해 필요한 항목만 업데이트해야 합니다.
그리고, 팀이 중복 코드가 없는게 하는것도 협력할 때 중요하다. 예를 들어, 같은 파일을 작업하고 중복 코드를 작성할 가능성이 매우 높기 때문에 팀 동료가 "user_logout" 분기를 작업하는 것과 동시에 "user_login" 분기를 작업해서는 안 됩니다.
예를 들어, 사용자 모델을 만들고 싶다고 가정해 봅시다. 터미널에서 새로운 Branch를 생성합니다.
$ git co -b create_user
"co"는 branch를 전환할 때 사용되는 "checkout"의 줄임말입니다. 끝에 "-b"와 이름을 추가하면 새로운 분기가 생성되고 우리를 위해 새로운 branch로 이동합니다.
다음 명령으로 현재 Branch를 확인 할 수 있습니다.
$ git branch
이제 우리의 새 Branch에 있고 코드 작업을 시작할 수 있습니다.
참고: 일반적으로 코드를 작업을 마칠 때(한 시간에 두 번) git 커밋해야 한다. 예를 들어, 메서드를 완료하고 코드 베이스가 작동하면 git은 다음과 같이 커밋한다.
$ git commit -m "Added function to allow Users to say 'Hello World'"
단계 3b: Pull Requests 보내기
각 Branch를 나누었고 우리의 팀이 하룻밤을 고생해서 코드작업을 마쳤습니다. 그리고 모두들 완성된 기능들을 가지고 다음날 돌아와서 그것들을 다시 마스터로 병합하려고 합니다. 어떻게 해야 할까요?
여러분의 Git Flow를 결정하는 것은 한 팀에서 일하는 데 있어 매우 큰 부분을 하고, 여기에서 선택해야 할 Git Flow가 있습니다.
먼저 합병 처리를 담당할 사람을 결정합니다. 독자적으로 합병을 하는 사람들이 적을수록 더 좋기 때문에, 4명으로 구성된 팀의 경우, 공식적인 "검토자" 또는 "Merge Master"를 한 명 갖는 것이 좋습니다.
다음으로, 모든 사람들이 자신의 Branch에서 Push 를 합니다.
$git Push
이제 Github Repo 페이지로 이동합니다. 그러면 페이지 상단의 노란색 막대에 올려놓은 나뭇가지에 "Compare & Pull request" 버튼이 있습니다.
참고: 만약 버튼이 안보인다면, 왼쪽에 있는 드랍다운 버튼 "Branch: "를 클릭합니다. 그리고, 메뉴에서 방금 푸시한 Branch를 선택하면, 오른쪽에 "Pull request"와 "Compare" 버튼이 있을 겁니다.
Compare & pull request를 클릭합니다. Pull request 페이지로 이동합니다. 여기서부터는 실제로 바꾼 것에 대해 간략하게 설명해야합니다. 그리고 당신은 "Reviewers" 탭을 클릭하고 당신의 팀의 "Merge Master"로 결정한 사람을 선택해야 한다. 마지막으로, 작업을 마치면 "Create pull request"를 클릭합니다.
단계 3c: Pull Requests 병합
자신이 공동작업자인 경우, 자신의 Pull requests만 병합 할 수 있습니다. 그러나, 다시, 만약 당신이 팀이랑 일 한다면, 한사람이 모든 합병(Merge)를 하고, 다른 모든 사람들이 Pull requests를 요청하는게 낫습니다. 효율적으로 생각했을때, 한명의 검토자는 체크만 하면 되기때문에 "Master consolidation"을 검토자로 지정하여 코드 충돌을 막고 처리할 수 있도록 하는것이 타당합니다.
그래서, 내가 다른 사람들의 Pull request를 보고 합병하는 역할이라고 가정한다면, 내가 Github에 로그인 했을때, 누군가가 나를 검토자로 지정했다고 알람이 옵니다. 그래서 그 알림 메시지를 보고 합병을 할지 안할지 정하고, 또한 comments를 작성 할 수 있습니다. 이로써, 더 효율적인 방법으로 팀원들 끼리 코드를 한공간에서 작업할 수 있습니다.
"Add your review" 버튼을 클릭합니다.
그러면 Pull Request 페이지로 이동이 됩니다. 만약 당신이 팀으로 일한다면, 매일 아침 팀끼리 앉아서, 모든 pull requests 를 함께 보고 합병하는것이 좋을 수 있습니다.
"Review changes" 드롭다운 목록에서 "Submit review"(검토 변경사항 제출)를 클릭하면 이제 검토가 풀 요청 스레드에 대한 설명으로 남길 수 있습니다.
만약 Pull request가 합병하는데 충분하다고 생각하면, Pull request 요청의 맨 아래로 이동해서 "Merge pull request"를 클릭합니다.
그런 다음 "Pull request successful and closed" 메시지와 "Delete branch" 버튼을 클릭한다.
이렇게 작업을 하면서 팀과 같이 협업을 하면된다.
댓글 영역