Table of Contents

728x90

학습목표 : git을 통해 팀 프로젝트를 수행할 수 있다.

다음은 팀장과 팀원이 git에서 수행하는 역할들을 순차적으로 적은 글이다. 동영상을 통해 실습내용을 확인할 수 있다.

 

 

Owner오너(팀장)

1. github에서 new organization을 만든다. (팀원member을 추가한다.)

2. repository 만든다. Public으로 만든다. Add a README file한다. Choose a license 는 MIT선택한다.

3. 초록색 버튼 <> Code를 클릭하여 HTTPS Web url을 복사한다.

    git bash에서 $ git clone <git team url> 실행 

    <git url>은 https://github.com/<owner의아이디>/<repository name>.git

4.https://www.toptal.com/developers/gitignore/ 에 들어가서 member들이 사용하고 있는 환경을 넣고 복사한다.

5. git bash에서 $ touch .gitignore를 만들고 $vi .gitignore 해서 내용을 붙여넣는다. $git status로 확인한다.

더보기

.gitignore 파일은 Git 버전 관리 시스템에서 특정 파일이나 디렉토리를 추적하지 않도록 설정하는 데 사용됩니다. 이 파일은 프로젝트 디렉토리에 위치하며, Git에 의해 자동으로 인식되어 지정된 패턴에 맞는 파일이나 폴더를 버전 관리에서 제외합니다.

.gitignore 파일의 주요 기능

  1. 버전 관리 제외: 프로젝트에 필요하지 않거나, 매번 변하는 파일(예: 로그 파일, 빌드 시스템 생성 파일 등)을 버전 관리에서 제외합니다.
  2. 보안 유지: 중요한 설정 파일이나 개인 정보가 포함된 파일(예: 환경 설정 파일에 포함된 API 키)을 공개 저장소에 올리지 않도록 보호합니다.
  3. 저장소 정리: 불필요한 파일을 저장소에 추가하지 않음으로써 저장소의 크기를 줄이고, 관리를 간소화합니다.

.gitignore 파일 사용 예

.gitignore 파일은 간단한 텍스트 파일로, 다음과 같이 작성할 수 있습니다:

# 이곳은 주석입니다
*.log       # 모든 .log 파일을 무시
temp/       # temp 디렉토리 전체를 무시
build/      # build 디렉토리 전체를 무시
config.ini  # 특정 파일을 무시
!keep.log   # .log 확장자를 무시하지만 keep.log는 무시하지 않음
  • * (와일드카드): 모든 것과 일치합니다. 예를 들어, *.log는 모든 .log 파일과 일치합니다.
  • / (슬래시): 디렉토리를 명시합니다. 예를 들어, temp/는 temp 디렉토리와 그 안의 모든 파일을 무시합니다.
  • ! (느낌표): 무시 규칙에서 예외를 만듭니다. 앞서 설정된 무시 규칙을 무시하고 특정 파일이나 폴더를 추적하도록 합니다.

.gitignore 파일은 프로젝트의 루트 디렉토리에 위치하며, 필요에 따라 하위 디렉토리에 추가적인 .gitignore 파일을 둘 수도 있습니다. 이는 해당 디렉토리의 구체적인 요구사항에 맞춰 무시 규칙을 더 세밀하게 설정할 수 있게 해줍니다.

6. $touch fizzbuzz.py 파일을 만들고 내용을 작성한다.

7. 환경설정 파일부터 서버에 올려야 한다. $git add .gitignore $git commit $git status

8. 이제 기능 파일을 서버에 올린다. $git add fizzbuzz.py $git commit $git status

9. $git push origin main 이제 github에 파일들이 잘 올라왔는지 확인한다.

10. github에 가서 issue 템플릿을 만든다. 미리 정의된 이슈템플릿을 멤버들이 활용할 수 있다.

*Projects에서 Featured에서 Kanban스타일을 적용하여 새 프로젝트 생성. 트렐로 처럼 이슈트래킹을 할 수 있다.

11. 멤버들에게 완성됐으니 메일을 확인하라고 알린다.

 

 

Member멤버

12. github나 메일을 통해 organization에 조인한다. 

13. 이슈를 만든다. 내가 할 일을 적는다.

14. Team Repository를 fork한다. repository를 받아와서 그 레포로부터 나의 공간을 만드는 것.

15. 초록색 버튼 <> Code를 클릭하여 HTTPS Web url을 복사한다.

    git bash에서 $ git clone <git team url> 실행

<git url>은 https://github.com/<member의아이디>/.git

16. git bash에서 $git branch <my branch name> 브랜치 만들고 $git switch <my branch name> 브랜치 변경

17. $vi fizzbuzz.py 하여 이슈에 적은 업무를 진행한다. $git add fizzbuzz.py $git commit

commit시 <resolve #이슈번호> 를 적으면 자동으로 github이슈와 연동된다. 

18. 클론한 포크 레퍼지토리를 리모트 시킨다. $git push -u origin <my branch name>

19. github에 가서 compare & pull request 초록색 버튼을 클릭하여 내용적고 끝.

이제 오너가 멤버의 작업을 확인해야 한다.

 

Owner오너(팀장)

20. Issues에 가서 팀원의 작업을 확인한다. assignees를 할당한다. 

(멤버는 오너와 의견을 나눈다)

21. Pull requests에 가서 Reviewers, assignees, labels 를 할당한다.

Files Changed 에 가서 코드를 보고 review 및 요청사항을 남긴다.

finish review를 할 때 comment는 단순의견 approve는 통과 request changes는 반영시 남기는 것.

 

Member멤버

22. git bash에서 코드수정하고 $git add fizzbuzz.py $git commit $git push origin <branch name>

 

Owner오너(팀장)

23. Pull requests - Files changed에서 코드 보고 잘 됐으면 멤버의 글에 edit 해서 <resolve #이슈넘버> 추가.

-> 이슈가 닫힘. -> Approve 처리. 

24. Resolve conversation 처리.

25. Merge pull request 처리. -> Confirm merge 처리. -> 초록색 open에서 보라색 merged로 바뀜. 

 

Member멤버

26. 다른 멤버들의 파일들을 내려받아야 할 때 Pull하면 에러가 날 때가 있다.

따라서 한번에 pull하지 말고 remote하고 fetch, merge를 한다.

$git remote add upstream <git team url> : upstream에 팀의 주소를 올려놓는다.

$git fetch upstream main : FETCH_HEAD에 임시로 받는다.

$git merge FETCH_HEAD: FETCH_HEAD에 머지한다.

27. conflict 발생시 먼저 발견한 사람이 해결해서 다시 올리면 된다.

$git status

$git add 파일명

$git commit

$git push origin main

 

 

2024.04.23 - [분류 전체보기] - Git branch 생성

2024.04.23 - [분류 전체보기] - Git commit 메시지

2024.04.19 - [Upstage AI 3기] - [학습블로그] Git 을 Git Bash에서 작동시켜보자