git flow 협업

  1. 팀장이 github만들고 dev에 clone후 git flow init
  2. 만들어진 develop브랜치에 학습효과를 위해 파일을 하나 먼저 만들어두고 시작(충돌 등 고민해보기)
  3. develop브랜치를 올릴건데 첫 push이니까 git push -u origin develop해줌
  4. 팀원이 팀장url로 이동해서 clone할건데 바로 clone하면 팀장 비번 등을 모르기 때문에 fork로 전체 저장소를 복제할 것임(소스코드가 똑 같은 존재를 만들거임. 즉, 팀장의 team-fizzbuzz에서 내꺼가 된 team-fizzbuzz 사본을 만들고, 거기에다 push를 함. 내꺼에서 있던 변경내역을 팀장한테 넘겨줄 거임.(내가 수정한 거 팀장님꺼에 갖다붙이면 좋을 것 같아요! = pull request하는 것임)
  5. 일단 fork로 복제(모든 팀원들이 해야함). => 팀장 저장소로부터 복제가 된 내 권한의 team-fizzbuzz가 생기게 됨
  6. 여기서 주소 복사해서 clone함.
  7. 현재 팀장의 main상태만 복제되어왔기 때문에 팀원도 git flow init을 해준다. 그러면 fizzbuzz.py(팀장이 미리 만들어뒀던)이 들어와있는 걸 확인할 수 있음.
     이게 된 이유: 팀장꺼 복제할 때 github보면 develop브랜치도 따라와서 상태가 같음. 그걸 clone해서 내 로컬에 가져온거라 얘도 상태가 같음. 이 상태에서 같은 이름의 branch를 만들어주면 당연히 내용물도 같은 상태가 되는 것.
  8. 팀원 작업 시작!!

<팀원 작업>
1. 작업(Pull request)전에 issues에서 내가 어떤 작업을 하겠다, 어떤 부분이 오류가 있다 이런식으로 내용을 남겨야함. Task list작성 후 해결할 때마다 체크해줘야함.
2. ‘git flow feature start 이름’ 해주면 ‘feature/이름’이라는 develop에서 뻗어나온 브랜치 생기고 이동함.
3. Vi로 작업->add commit(내용 자세히 넣기)->finish로 기능개발 끝냄.
4. 첫 push니까 -u해줌  복제한 내 repo에 반영됐고 이걸 팀장에게 컨펌 받아야함!

<컨펌>
1. 작업이 끝났다면 issue에서 Task list다 했나 확인하고 컨펌 받기 시작.
2. Compare& pull request나 contribute버튼 누르면 팀장의 repo로 이동하게 됨.
3. 화살표와 브랜치명 잘 확인하기!(main으로 가지않게)
4. 내용에 issue 넘버에 대한 해결 사항으로 이 pull request를 만들었다 하고 create pull request. 누르면 팀장한테 메일이 감.

<팀장>
1. issue확인하면서ㅓ assign으로 팀원 배정하고 label 설정
2. pull request확인하면서 reviewrs에 본인 설정하고 assign, label 설정
3. 변경사항 보면서 불만이나 등등 코멘트들을 달아줌. (reviewr는 코멘트 달고 finish your review눌러줌->전달 사항 적고 request changes눌러줌/approve는 승인이라는 뜻)

<팀원>
1. develop에서 pull request를 열어둔 상황이기 때문에, open되어 있는 동안에는 내가 develop에서 push하면 github상에 밑에 바로 반영이 됨. (닫힐 때까지 바로 반영되기 때문에 팀장들은 해결됐을 때 바로바로 닫아줘야 팀원들이 일하기 수월함)
2. 두가지 문제여서 두가지 커밋으로 나눠서 각각 수정하고 add commit 한 뒤에 마지막에 push까지 하면 바로 반영된 걸 볼 수 있음.
3. resolve처리

<팀장>
1. 작업 확인 후 viewd처리 하고 review changes에서 approve로 바꿔줌.
2. Merge 해줌.(이것은 꼭 팀장급이나 review를 본 사람이 해야함)
3. 팀장은 본인 거니까 git pull origin develop해서 땡겨받으면 됨.

<나머지 팀원>
1. 바뀐 내용 전달 받기 위해 pull받아야하는데 팀장의 develop을 땡겨받아야 함.
2. 이를 위해 팀장 develop의 주소 복사 후, git remote로 등록(git remote add 별명 주소) 여기서 보통 upstream이라는 이름을 관습적으로 씀!
3. Remote를 등록했으니 땡겨받을건데 이때 fetch한 뒤 merge하거나 / pull로 받으면 됨.
4. git fetch upstream develop 하면 땡겨서 FETCH.HEAD라는 임시저장소에 담아두기만 함. 여기서 원하는 부분만 받거나 전체를 받는 걸 선택할 수 있음
5. 내가 위치한 develop에서 합병해줌! git merge FETCH.HEAD
6. 끝!! (이렇게 한 사이클 돈 것이기 때문에 새로 하려면 또 feature start해서 작업하면 됨!)

0개의 댓글