Git/GitHub 소스 관리 기본 흐름
- 지역 저장소 > GitHub(원격 저장소)
- 지역 저장소에 새 프로젝트 생성
- git init 명령어로 해당 프로젝트 Git 지역 저장소로 지정
- 파일 수정
- git add 명령어로 수정한 파일을 스테이징 영역으로 이동
- git commit 명령어로 지역 저장소에 저장
- git push 명령어로 지역 저장소에서 발생한 변경 내역을 원격 저장소에 반영
- GitHub > 지역 저장소
- GitHub에 올려진 프로젝트를 전체를 git clone 명령어로 다운로드
- GitHub에 올려진 프로젝트에서 변경 사항만을 git pull 명령어로 다운로드(다른 사람이 수정한 내용을 나의 지역 저장소에 통합)
git init
- 기능 : git 초기화 (지역 저장소 생성)
- 초기화 수행시 git init
- 초기화 취소시 rm -rf .git ( 탐색기에서 삭제해도 됨)
git config
- 기능 : 사용자 정보 등록
- 현재의 깃 지역 저장소에만 해당하는 사용자 정보를 등록할 경우
- git config user.name "사용자 이름"
- git config user.email "이메일 주소"
- 모든 프로젝트에 적용될 사용자 정보를 등록할 경우
- git config --global user.name "사용자 이름"
- git config --global user.email "이메일 주소"
- cat .git/config 로 진행사항 확인가능 (core, user / user에 내가 등록한 이름 이메일 있음 성공)
git status
- 기능 : 현재 프로젝트의 파일 상태 확인하기
git add
- 기능 : 커밋에 포함될 파일 등록
- git add {파일 명}
git commit
- 기능 : 커밋 생성/수정
- git commit -m "메시지"
- 커밋 메시지를 상세하기 작성해야 할 경우 (에디터를 통해 작성 가능) , 파일 하나 더 만들고, 커밋 목록에 파일을 추가함
- 기존 커밋을 수정해야 할 경우
- git commit --amend
- git commit --amend -m "수정 메시지"
- 기존 커밋의 사용자를 수정해야 할 경우
- git commit --amend --author "username <email>"
Git 원격 저장소 설정
- GitHub 페이지에 가서 새로운 저장소(Create a new repository) 생성 작업을 수행
- 생성된 원격 저장소 주소 복사
git remote add
- 원격 저장소 주소를 Git 지역 저장소에 등록
- git remote add origin {복사한 원격 저장소 주소}
git push
- 지역 저장소에 있는 커밋을 원격 저장소에 등록
- git push {원격 저장소(식별자)} {브랜치}
git log
- git 로그 조회
- git log
- 커밋 로그를 파일 단위에서 변경 내용을 확인하려면
- git log -p
- git log --patch
- 최근 몇 개의 커밋 로그를 보려면
- git log -{숫자}
- 명령어 일람
- 조건을 결합해서 사용가능
- git log -p -{숫자]
- 조건을 결합해서 사용가능
- 각 커밋의 통계 정보 보기
- git log --stat
- 커밋 로그를 보여주는 형식 지정
- git log --pretty={option}
- --pretty 옵션에서 사용할 수 있는 출력 형식
git --help
- 깃허브 관련 명령어들 설명
<요약>
git init
git add README.md
git commit -m "first commit(원하는 메시지)"
git branch -M main
git remote add origin {복사한 원격 저장소 주소}
git push -u origin main
Git 기본 명령어 요약
협업자(Collaborator) 등록하기
- 등록 순서
- GitHub 사이트에서 해당 저장소로 이동
- 저장소 상단 메뉴에서 [Settings] 선택
- [Settings] 화면 좌측 메뉴바에서 [Collaborator] 선택
- 비밀번호를 물어볼 때도 있음
- [Add people] 버튼 클릭
- 추가하려는 사용자 검색
- GitHub 사용자 이름 또는 이메일로 검색 가능
- 검색 후 추천 명단에서 해당 사용자 선택 후 [추가 버튼]을 눌러서 초대
프로젝트
- 프로젝트 도구
- 프로젝트의 진행에 대한 작업 및 우선순위를 돕는 도구
- 현재 진행 중인 프로젝트의 성격에 맞게 관리할 수 있도록 다양한 유형의 프로젝트 보드를 제공함
만드는것은 레포지토리 내에서 Projects 메뉴 누른 후 테이블, 보드, 로드맵 등의 형태를 선택
아래와 같이 드래그엔 드롭으로 협업 등록되어있는 사람들이 이동시켜서 작업의 진행도를 볼 수 있게 도와준다.
Workflow 등의 운영도 가능하다
프로젝트 생성 시, 템플릿을 적용할 수 있다.
이슈(lssues)
이슈(Issues) 관리 시스템
이슈 관리 시스템은 프로젝트 작업, 개선 사항, 오류 추적 기능을 제공하는 도구로, 이를 통해 실제 프로젝트에서 발생하는 다양한 작업을 이슈 단위로 작성하고 관리할 수 있다.
- 이슈 작성 및 관리:
- 새로운 기능 추가, 기존 기능 개선, 오류 해결 등의 작업을 수시로 이슈로 작성하여 관리
- 각 저장소마다 독립적인 이슈가 존재
- 이슈 라벨(Labels):
- 이슈의 성격을 구분짓기 위한 도구로, 기본적으로 다음 9가지 라벨이 제공됨
- bug: 버그 관련 이슈
- documentation: 문서 관련 이슈
- duplicate: 중복 이슈
- enhancement: 기능 개선 이슈
- good first issue: 초보자에게 적합한 이슈
- help wanted: 도움 요청 이슈
- invalid: 유효하지 않은 이슈
- question: 질문 관련 이슈
- wontfix: 수정하지 않을 이슈
- 필요에 따라 새로운 라벨을 생성하거나 기존 라벨을 수정할 수 있다.
- 이슈의 성격을 구분짓기 위한 도구로, 기본적으로 다음 9가지 라벨이 제공됨
이슈 라벨 만들기
프로젝트와 이슈의 연계
이슈
- 프로젝트 작업, 개선 사항, 오류 추적 기능을 제공하기 위한 도구
- 자체적으로 운영할 수 있지만 프로젝트 도구와 연계해 사용하면 효율성 향상
- 이슈를 생성할 때, 해당 프로젝트를 선택
- 프로젝트 페이지에 새로 추가된 이슈 반영
- 프로젝트 운영을 통해 이슈 처리
프로젝트 선택해 등록해놓으면 자동으로 No Status에 해당 이슈 등록됨
Branch(분기)
브랜치란?
- 프로젝트 기준 코드인 main 브랜치로부터 독립적인 작업 공간을 만들어주는 기능
- 여러 개발자가 서로 다른 버전의 코드를 만들 때 서로의 작업에 영향을 주지 않기 위해 사용됨
커밋과 main 브랜치
- 현 시점에서 main 브랜치는 Commit 3를 바라보고 있으며,
- main 브랜치의 커밋 내역에는 Commit 1, Commit 2, Commit 3이 포함되어 있음
- 브랜치 생성하기
- GitHub 원격 저장소에서 생성 후, 지역 저장소로 가져오기
- GitHub 사이트에서 해당 메뉴를 이용해 생성
- 지역 저장소에서 생성 후 , 원격 저장소에 반영하기
- 로컬 시스템 상에서 Git 명령어를 사용하거나(CLI), GUI 도구를 이용하여 생성함
New Branch 이름 변경 후 Source 원하는 곳으로 지정
지역저장소에서 가져오는 법은 Pull을 통해서 가져오면 된다.
git remote update
git branch -a
git checkout -t origin/{브랜치 이름}
git branch -a # 브랜치 정보 재 확인(가리키고 있는거 잘 확인하기)
이후 동일하게 Pull, push등을 이용해서 해결
지역 저장소에서 생성 후, 원격 저장소에 반영하기
- 현재 브랜치 확인
- 지역 저장소 : git branch -l
- 원격 저장소 : git branch -r
- 지역/원격 모두 : git branch -a
- 브랜치 생성하기 : git branch {새로운 브랜치 명}
- 브랜치 변경하기 : git checkout {변경할 브랜치 명}
- 생성된 브랜치를 원격 저장소에 반영하기
- git push origin {새로운 브랜치 명}
브랜치 삭제하기
지역저장소 : git branch -d {삭제할 브랜치 명}
원격 저장소 : git push origin -d {삭제할 브랜치 명}
Merge(병합)
브랜치 병합하기 : Merge
- 각 작업자 별, 작업 내용 별로 브랜치를 나눈다면 당연히 각 브랜치를 병합하는 과정도 필요함
- 두 브랜치의 변경 내용을 비교하여 병합 여부 결정 및 수행
- 실습
- 브랜치 변경 : main > curriulum
- curriulum 브랜치에서 파일 수정 후 Commit &Push
- main 브랜치와 curriulum 브랜치 내용 비교(파일 변경 상황을 비교)
- curriulum 브랜치를 main 브랜치에 병합 : git merge {병합할 브랜치}
- main 브랜치 내용 확인
- git push origin {병합한 브랜치}
병합 커밋 생성 : merge commit
기준 브랜치에 다른 변경 사항이 존재하는 경우, 새로운 브랜치의 작업 내용을 기준 브랜치에 병합하려면
기분 브랜치와 새로운 작업 브랜치의 변경 내용을 하나로 합치는 작업
- main 브랜치에서 04_index.html 파일 수정
- 브랜치 변경: main → curriculum
- curriculum 브랜치에서 04_index.html 파일 수정
- main 브랜치와 curriculum 브랜치 내용 비교(파일 변경 상황을 비교)
- curriculum 브랜치를 main 브랜치에 병합: git merge commit {병합할 브랜치}
- main 브랜치 내용 확인
Resolve Conflict (충돌 해결)
- 여러 개발자가 프로젝트 진행하다 보면 동일한 코드를 제각각 수정하는 경우가 발생함
- 이런 경우 Merge(병합) 시 충돌 (conflict) 발생
- 충돌이란 Git이 자동으로 Merge를 수행할 수 없는 상황을 말함
- 동일한 코드가 수정되어 있기에 어떤 내용을 최종적으로 반영해야 하는지 알 수 없음
- 이 경우 사람이 직접 조정해 주어야 함
- 복잡하게 꼬일 경우는 꼬이는 부분 찾아서 그 이전으로 돌아가서 처리하는게 더 좋음
Pull Requests 요청 및 처리
- Pull Requests
- 병합을 하기 전, 작업 브랜치의 변경 내용을 협업 개발자들에게 공유하고 리뷰를 받는 과정
- 하나의 프로젝트에서 여러 개발자가 함께 작업 하고 있는데
- 내가 코드를 변경했다고 그대로 병합해버리면 매우 위험하므로( 모든 작업이 다 망가질 수 있음 )
- 내가 변경한 내용이 다른 개발자들의 작업 내용에 어떻게 영향을 주는지 빠짐없이 검토해 달라는 요청
- GitHub에 별도의 브랜치 생성
- 내가 작업한 내용을 GitHub에서 내가 사용하는 브랜치에 push
- Pull Requests 작성
- Pull Requests 검토 후 반영
다음 포스팅에서 이어서 진행
'PYTHON-BACK' 카테고리의 다른 글
#파이썬 22일차_GitHub Action (0) | 2024.07.30 |
---|---|
#파이썬 21일차_GitHub Action + CI/CD (0) | 2024.07.29 |
#파이썬 19일차_GitHub Action (0) | 2024.07.25 |
#파이썬 도서관 출납 시스템_18일차_var. 0.2.0 (3) | 2024.07.24 |
#파이썬 도서관 출납 시스템_18일차_var. 0.1.0 (0) | 2024.07.24 |