본문 바로가기

PYTHON-BACK

#파이썬 20일차_GitHub Action

728x90
Git/GitHub 소스 관리 기본 흐름
  • 지역 저장소 > GitHub(원격 저장소)
    1. 지역 저장소에 새 프로젝트 생성
    2. git init 명령어로 해당 프로젝트 Git 지역 저장소로 지정
    3. 파일 수정
    4. git add 명령어로 수정한 파일을 스테이징 영역으로 이동
    5. git commit 명령어로 지역 저장소에 저장
    6. git push 명령어로 지역 저장소에서 발생한 변경 내역을 원격 저장소에 반영
  • GitHub > 지역 저장소
    1. GitHub에 올려진 프로젝트를 전체를 git clone 명령어로 다운로드
    2. 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) 관리 시스템

이슈 관리 시스템은 프로젝트 작업, 개선 사항, 오류 추적 기능을 제공하는 도구로, 이를 통해 실제 프로젝트에서 발생하는 다양한 작업을 이슈 단위로 작성하고 관리할 수 있다.

  1. 이슈 작성 및 관리:
    • 새로운 기능 추가, 기존 기능 개선, 오류 해결 등의 작업을 수시로 이슈로 작성하여 관리
    • 각 저장소마다 독립적인 이슈가 존재
  2. 이슈 라벨(Labels):
    • 이슈의 성격을 구분짓기 위한 도구로, 기본적으로 다음 9가지 라벨이 제공됨
      • bug: 버그 관련 이슈
      • documentation: 문서 관련 이슈
      • duplicate: 중복 이슈
      • enhancement: 기능 개선 이슈
      • good first issue: 초보자에게 적합한 이슈
      • help wanted: 도움 요청 이슈
      • invalid: 유효하지 않은 이슈
      • question: 질문 관련 이슈
      • wontfix: 수정하지 않을 이슈
    • 필요에 따라 새로운 라벨을 생성하거나 기존 라벨을 수정할 수 있다.

이슈 라벨 만들기

프로젝트와 이슈의 연계

이슈 

  • 프로젝트 작업, 개선 사항, 오류 추적 기능을 제공하기 위한 도구
  • 자체적으로 운영할 수 있지만 프로젝트 도구와 연계해 사용하면 효율성 향상
    • 이슈를 생성할 때, 해당 프로젝트를 선택
    • 프로젝트 페이지에 새로 추가된 이슈 반영
    • 프로젝트 운영을 통해 이슈 처리

프로젝트 선택해 등록해놓으면 자동으로 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 검토 후 반영

 

다음 포스팅에서 이어서 진행

728x90