Git - Practice

AAiss·2024년 10월 21일

Git

목록 보기
2/2

Github Repository 생성

우측 상단 프로필 클릭


"Your repositories" 클릭


우측 상단 "New" 클릭


"Repository name"(github-practice) 작성 후 "Create repository" 클릭

  • 레포지토리의 이름
  • 레포지토리의 설명
  • 공개 여부 (public/private)
  • README (레포지토리의 얼굴인 README 파일)
  • .gitignore (Git으로 트래킹하지 않을 파일들을 기록)
  • license (프로젝트의 라이선스 설정)

생성된 레포지토리의 초기 화면


Collaborator 추가

상단의 "Settings" 클릭


좌측의 "Collaborators" 클릭


패스워드 입력


"Add people" 클릭


팀원 username 혹은 email 입력


하단 버튼 클릭


수락 대기 상태


초대 완료


Local Repository 생성

바탕 화면에 "github-practice" 폴더 생성


VSCode 실행 후 좌측 상단 "File" 클릭


"New Window" 클릭


새로 열린 VSCode 창에서 좌측 상단 "File" 클릭


"Open Folder..." 클릭


바탕 화면에서 "github-practice" 클릭 후 "폴더 선택" 클릭


좌측 상단의 "Folders" 아이콘 클릭


GitHub - Local 연동

상단의 "Terminal" 클릭


"New Terminal" 클릭


하단 터미널에 git init 입력


좌측 상단의 "New File..." 클릭


README.md 입력


# github-practice 입력 후 ctrl + s(저장)


하단 터미널에 git add README.md 입력


터미널에 git commit -m "first commit" 입력


터미널에 git branch -M main 입력


레포지토리 주소 복사


터미널에 git remote add origin <레포지토리 주소> 입력


터미널에 git push -u origin main 입력


GitHub Repository에 Local Repository의 파일 추가됨


Issue Template 생성(GitHub)

"Settings" 클릭


스크롤 내린 후 Features - Issues의 "Set up templates" 클릭


"select" 클릭


"Feature request" 클릭


"Preview and edit" 클릭


편집 버튼 클릭


Template content 지우기


하단 내용 붙여넣기

## Background
- 

## Todo
- [ ] Todo 1
- [ ] Todo 2

## See also
- #
  • Background - 작업의 배경을 작성합니다.
  • Todo - 해야할 작업들을 나열합니다. (SubTask 개념)
  • See also - 해당 Issue와 관련있는 다른 Issue 혹은 Pull Request의 태그를 작성합니다.

Issue default title에 [FEAT] 입력


"Propose changes" 클릭


"Commit changes" 클릭


GitHub Repository에 Issue Template 추가됨


Issue Template 생성(Local)

Local Repository에는 추가된 Issue Template이 없음


git pull origin main 입력 -> Issue Template 추가됨


feature_request.md를 복제하여 bug_report.md 파일 추가
(경로: github-practice/.github/ISSUE_TEMPLATE/bug_report.md)


하단 내용 붙여넣기

---
name: Bug report
about: Reporting a bug for this project
title: "[BUG]"
labels: ''
assignees: ''

---

## Describe the bug
-

## To Reproduce
-

## Expected behavior
-

## Screenshots
-

## Additional context
-

## Possible Solution
-

## Your Environment
-
  • Describe the bug: 버그에 대한 설명
  • To Reproduce: 버그를 재현하는 방법
  • Expected behavior: 정상적으로 작동했다면 일어나야하는 작동 방식
  • Screenshots: 버그가 관측된 스크린 샷이 있다면 첨부
  • Additional context: 버그와 관련된 추가 정보를 작성
  • Possible Solution: 버그를 해결할 가능성이 있는 해결책을 제안
  • Your Environment: 특정 환경에서만 발생하는 버그일 수 있으므로 실행 환경 작성

git add .github\ISSUE_TEMPLATE\bug_report.md 입력
git status 입력 -> 상태 확인
git commit -m "feat: Add Bug report issue template" 입력


git push origin main 입력


GitHub Repository에 Issue Template 추가됨


Issue 기반 개발

"Issues" 클릭


"New Issue" 클릭


Feature request의 "Get started" 클릭


내용 수정


- Add a title -

[FEAT] 더하기 함수를 구현합니다.
- Add a description -

## Background
- 두 개의 숫자를 입력으로 받아 합을 반환하는 더하기 함수를 구현해야 합니다.

## Todo
- [ ] add 함수 구현
  • Add a title - Issue 제목
  • Add a description - Issue 설명
  • Assignees - Issue 담당 팀원
  • Labels - Issue 종류

"Submit new issue" 클릭


Issue 추가됨 (Issue Tag: #1)


git branch feat-1/add-function 입력 -> branch 생성
git branch 입력 -> branch 확인
git checkout feat-1/add-function 입력 -> branch 이동

  • feat: 기능 구현
  • -1: Issue Tag
  • add-function: 구현할 기능

main.py 생성
(경로: github-practice/main.py)


하단 내용 붙여넣기

def add(x, y):
    return x + y

if __name__ == "__main__":
    print(add(1, 2))
    print(add(1.5, 2.5))
    print(add(1, 2.5))
    print(add(1.5, 7))

git add main.py 입력
git commit -m "feat: Add add function 입력
Enter 입력
#1" 입력

Issue Template에 맞추기 위해 줄바꿈 적용한 것


git push origin feat-1/add-function 입력


Issues에 Commit 추가됨 -> 이러한 작업 내용을 merge 하기 위해 Pull Request 필요


Pull Request Template 생성

git checkout main 입력 -> main branch로 이동


PULL_REQUEST_TEMPLATE.md 파일 생성
(경로: github-practice/.github/PULL_REQUEST_TEMPLATE.md)


하단 내용 붙여넣기

## Overview
-

## Change Log
-

## To Reviewer
-

## Issue Tags
- Closed: #
- See also: #
  • Overview: 작업에 대한 개요
  • Change Log: 작업에서 변경된 부분
  • To Reviewer: 리뷰어에게 전달할 내용
  • Issue Tags: 해당 PR과 관련있는 Issue의 Tag, PR 종료 시 해당 Issue 함께 종료

git add .github/PULL_REQUEST_TEMPLATE.md 입력
git commit -m "feat: Add Pull Request Template" 입력


git push origin main 입력


Pull Request Template 추가됨


Pull Request 생성

"Pull requests" 클릭


"Compare & pull request" 클릭


내용 수정


하단 내용 붙여넣기

#1

## Overview
- 두 개의 수를 입력 받아 더한 값을 반환하는 함수를 구현했습니다.

## Change Log
- 두 개의 수를 입력 받아 더한 값을 반환하는 함수 구현

## Issue Tags
- Closed: #1
  • Reviewers: 코드 리뷰 담당자
  • Assignees: 코드 작성자
  • Labels: 작업 종류

"Create pull request" 클릭


코드 리뷰 대기


(Reviewer 화면) Review 요청 받음


(Reviewer 화면) "Files changed" 클릭


(Reviewer 화면) 변경사항 확인


(Reviewer 화면) Review를 원하는 라인에 커서를 올리면 [+] 버튼 팝업 -> 클릭 시 해당 라인 리뷰
클릭 후 드래그 시 여러 라인 선택 가능


(Reviewer 화면) 리뷰 작성 및 "Start a review" 클릭


(Reviewer 화면) 모든 리뷰 작성 후 "Finish your review" 클릭


(Reviewer 화면) 세 개의 옵션 중 하나 선택 후 "Submit review" 클릭

  • Comment: 단순 댓글(코드 승인 x)
  • Approve: 코드 승인
  • Request changes: 코드 승인 x

(Reviewer 화면) 코드 승인 x


코드 수정 필요


git checkout feat-1/add-function 입력

add-function을 구현했던 branch로 돌아와 코드 수정


수정한 main.py가 정상적으로 동작하는지 Local에서 확인


git add main.py 입력
git commit -m "refactor: add function type" 입력


git push origin feat-1/add-function 입력


(Reviewer 화면) 새로운 Commit 추가됨


(Reviewer 화면) "View changes" 클릭


(Reviewer 화면) 코드 리뷰


(Reviewer 화면) Approve


"Merge pull request" 클릭


"Confirm merge" 클릭


"Delete branch" 클릭


merge 완료


main branch에 적용됨


Pre-commit 생성

하단 내용 붙여넣기

## Background
- 파이썬 코드 포맷팅을 위한 black을 자동화 하기 위해 pre-commit을 설치해야 합니다.

## Todo
- [ ] pre-commit 설치 및 config 설정
- [ ] config에 black 설정


git branch 입력

GitHub Repository의 내용이 Local Repository에 반영되지 않음


git checkout main 입력


git pull 입력

GitHub Repository의 내용이 Local Repository에 반영


git branch feat-3/pre-commit 입력
git branch -> branch 확인


git checkout feat-3/pre-commit 입력


pip install pre-commit 입력


pre-commit sample-config > .pre-commit-config.yaml 입력

  • 공백 제거, end-of-file 검사, yaml 검사, 대용량 파일 검사 등을 기본 hook으로 설정
  • hook은 간단하게 중간에 실행되는 프로그램이라 이해

하단 내용 붙여넣기

# See <https://pre-commit.com> for more information
# See <https://pre-commit.com/hooks.html> for more hooks
repos:
    - repo: https://github.com/pre-commit/pre-commit-hooks
      rev: v3.2.0
      hooks:
          - id: trailing-whitespace
          - id: end-of-file-fixer
          - id: check-yaml
          - id: check-added-large-files
    - repo: https://github.com/psf/black
      rev: stable
      hooks:
          - id: black

pre-commit autoupdate 입력 -> 에러 발생


"UTF-16 LE" 클릭


"Save with Encoding" 클릭


"UTF-8" 클릭


pre-commit autoupdate 입력


pre-commit install 입력


git add .pre-commit-config.yaml 입력
git commit -m "feat: Add pre-commit config 입력
Enter 입력
#3" 입력

pre-commit 최초 실행 시 초기 설정으로 인한 시간 소요


Failed 발생 시 위 과정 다시 수행
(git add .pre-commit-config.yaml 입력
git commit -m "feat: Add pre-commit config 입력
Enter 입력
#3" 입력)


pre-commit run —all-files 입력

  • 기존 모든 파일에 대해 pre-commit 적용
  • Failed 발생한 파일들 다시 commit 필요

git status 입력


git add . 입력

모든 파일 add


git commit -m "refactor: Apply pre-commit" 입력


git push origin feat-3/pre-commit 입력



하단 내용 붙여넣기

- Add a title -

Add pre commit
- Add a description -

## Overview
- pre-commit을 추가합니다.

## Change Log
- pre-commit config 및 Python 포맷팅을 위한 black을 추가했습니다.
- 기존 파일에 pre-commit을 적용하였습니다.

## Issue Tags
- Closed: #3



Tips

git init : 현재 폴더 git 폴더화
git remote : remote 폴더 확인
git remote <git 경로> : origin remote 폴더 만들고 git 경로와 연동

git branch -M main : main 브랜치로 이동
git checkout <branch_x> : branch_x로 이동
git checkout -b <branch_x> : branch_x로 이동, branch_x가 없다면 생성 후 이동

git add <abc.py> : 현재 브랜치에 abc.py stage
git commit -m "message" : stage 상태인 file 모두 커밋
git status : 현재 상태 확인
git push origin main : origin -> main push
git push -u origin main : origin -> main push 자동화 (이후 git push만 써도 됨)
git pull origin main : main -> origin pull
git reset HEAD : 최신 add 취소
git reset HEAD^ : 최신 commit 취소

pip install pre-commit : pre-commit 라이브러리 설치
pre-commit sample-config > .pre-commit-config.yaml : sample config 생성
pre-commit autoupdate : config 자동 업데이트
pre-commit install : 현재 branch에 pre-commit config 적용
pre-commit run --all-files : 이미 push된 파일 포함 모든 파일 재검사

pip freeze > requirements.txt

0개의 댓글