GitHub 익숙해지기

WONY_yoon·2025년 12월 7일

GitHub 실무 적용

실무 적용 전 기술 학습



1. 사전 환경 조성

깃에서 연습용 레포 생성

깃이랑 파이참 연동

→ 방금 만든 레포 URL 입력하여 Clone



2. 브랜치 생성 / 삭제

방법 1. CLI 활용

브랜치 생성

git checkout -b [branch name]

브랜치 푸시

git push -u origin [branch name]
-u : upstream 설정 (다음부터 push만 입력해도 됨)

→ GitHub 에서 브랜치 생성 확인


방법 2. Pycharm 기능 활용

→ 'New Branck' 클릭하여 브랜치이름 작성 후 Create


브랜치 삭제

로컬 삭제 : git branch -d [branch name] / 강제삭제 시 -D
삭제 푸시 : git push origin —delete [branch name]



3. 브랜치 이동

현재 브랜치 위치 확인

git branch
*[branch name] 표출

브랜치 이동

git checkout [branch name]



4. README.md 파일 수정

방법 1. CLI 활용

  1. 일단 README.md 파일 내용 변경

  2. 변경사항 확인
    git status

  3. 변경 파일 stage 올리기
    git add README.md
    git status

  4. 커밋 만들고 Push
    git commit -m "Modify Contents"
    git push
    처음이라면 git push -u origin feature

  5. 요약하자면
    git status → 변경된 file 확인
    git add [modified file name]
    git commit -m "[Comment]"
    git push


방법 2. Pycharm 기능 활용

  1. 일단 README.md 파일 내용 변경

  2. 변경된 파일 커밋 올리기
    → 왼쪽 커밋 표시 버튼 클릭
    → 변경된 파일 체크박스 체크
    → Commit and Push 버튼 클릭

  3. 푸시하기

둘 중에 편한 방법 사용 가능! CLI로 익숙해지는 것이 나중에 편하니 CLI 연습하는 것 권장



5. dev로 Pull Request 만들기

Pycharm 에서 PR 만들기

  1. PR 을 만들 브랜치로 이동
    git checkout feature → feature 브랜치에서 dev로 PR 만들기
  1. 로컬 dev 에도 최신상태로 맞춰주기

GitHub 에서 해보기

  1. PR 만들기

  2. PR 병합

main 에도 반영하고싶다면 "base"를 main으로 설정하여 반영하면 됨!!



6. Pycharm 에서 dev 최신 내용 가져오기

방법 1. CLI 활용

  1. dev 브랜치로 이동 (checkout)

  2. GitHub의 dev에서 최신버전 pull 해오기!


방법 2. Pycharm 기능 활용

  1. dev 브랜치로 이동 (checkout)

  2. GitHub의 dev에서 최신버전 pull 해오기!

main 에도 반영하고싶다면 main 으로 checkout 하여 동일하게 진행하면 됨!!



7. 일부러 충돌 만들기

README 안의 같은 한 줄을 main / dev에서 서로 다르게 수정

  1. Pycharm → Main 에서 수정
  1. Pycharm → dev 에서 수정

서로 다른 내용 Push된 것 확인 가능



8. merge 시도하여 충돌 발생시키기 (로컬)

방법 1. CLI 활용

Git Message
CONFLICT (content): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.

→ 위에 스샷에서 "Resolve Conflicts" 클릭하여 "3-way-merge"로 진입


방법 2. Pycharm 기능 활용



9. PyCharm Conflict Resolver로 해결

3-way merge 창 구조

Left = dev 브랜치 내용 (This line is from DEV branch.)
Right = main 브랜치 내용 (This line is from MAIN branch.)
Center = 최종 결과 / 내가 수정하는 내용!

  1. 양쪽 중 하나의 내용으로 선택하고싶다면, 화살표 눌러서 merge 진행→ 혹은 하단에 Acceppt Left, Accept Right 로 반영 가능
  1. 새로운 내용으로 작성하고싶다면, 가운데 화면에서 직접 수정 가능
  1. Apply → Apply Changes and Mark Resolved 클릭
  1. CLI를 활용하든 Git 기능을 활용하든 하여 커밋 → 푸시 진행

10. dev를 main 기준으로 Rebase

CLI 활용

  1. dev 로 이동
  2. main 기준으로 rebase
    git rebase main
  3. 리베이스 전 상태로 롤백
    git rebase --abbort
  4. 충돌로 멈춘 것 재실행
    git rebase --continue

Pycham 기능 활용

  1. def로 이동하여 rebase 선택
  1. main 기준으로 rebase 하기

rebase 전

rebase 후


리베이스 후 dev에 push 하기

방법 1. git push --force-with-lease
→ 다른 사람이 그 사이에 올린 커밋이 있으면 실수로 덮어쓰지 않게 한 번 더 체크
방법 2. git push -f


리베이스 결과 확인

CLI로 로그 확인

git log --oneline --graph --all --decorate

Pychar으로 로그 확인

command + 9


Merge VS Rebase

Merge

모양

A ── B ── C ────── M   (main)
        \       /
         D ── E       (dev)

중간에 M(Merge commit) 이라는 “합쳐진 커밋”이 생김

장점

→ 히스토리에 “언제 어디서 브랜치가 합쳐졌는지” 기록이 남음
→ 이미 원격에 올라간 브랜치에 써도 안전 (공용 브랜치에서 자주 씀)

단점

→ 커밋 그래프가 가지처럼 지그재그 복잡해질 수 있음


Rebase

모양

A ── B ── C ── D' ── E'   (dev)

브랜치를 다시 main 뒤로 재배열해서 히스토리가 한 줄로 깔끔하게 보임

장점

→ 커밋 로그가 깨끗해서 나중에 디버깅/리뷰할 때 보기 좋음

단점

→ 이미 다른 사람이 pull 받은 브랜치를 rebase하면 히스토리 충돌 생길 수 있음
→ 보통 혼자 쓰는 브랜치(local feature 브랜치) 에서만 안전하게 함

0개의 댓글