(3-0) 참고 - Git

Yongjoo Lee·2020년 12월 14일
0
post-thumbnail
post-custom-banner

Git

  1. Git?
  2. Git의 Branch
  3. Git과 Github
  • Github를 이용해 과제 제출하기

Git?

분산 버전관리 시스템

https://user-images.githubusercontent.com/46367323/102047437-984d2400-3e20-11eb-94e0-63e613bca07e.png

  • 코드를 관리하는 데에 있어서 일을 분산
    • 공용 코드 공간을 만들고 각자가 코드를 가져가서 비동기적(순서 상관없이)으로 자신이 작업한 것을 업로드 하는 구조

👉독립적으로 작업이 가능하고, 다른 사람이 작업한 것이 있으면 저장소가 갱신이 되고 자신의 코드에 반영해서 작업할 수 있다!

  • 코드의 버전 관리

Git 시작하기

링크에 접속하여 Git 설치!

로컬 저장소 생성

: 다음 명령을 통해 현재 작업중인 디렉토리를 git 저장소로 지정할 수 있음

git init

Git 저장소에서 파일의 상태

https://user-images.githubusercontent.com/46367323/102047837-540e5380-3e21-11eb-9b68-52ec8d3a7e66.png

LOCAL : 로컬 저장소 / REMOTE : 원격 저장소 (Github)

  • Working Directory : 커밋에 반영되지 않은 파일들 (unstaged)
  • Staging Area : 커밋을 남길 파일들 (staged)
  • Repository : 커밋된 파일들 (committed)

Git 기본 명령어

git add

파일을 Staging Area 에 추가

예) git add example.py : example.py를 생성(혹은 수정)하고, 이를 Commit에 반영하고자 추가

git status

Git 프로젝트 내의 파일 상태를 확인

git commit -m <commit_message>

커밋 메시지와 함께 커밋

예) git commit -m "add example.py" "add example.py" 라는 커밋 메시지로 커밋

-m : message를 남기는 옵션

git log

커밋 기록을 확인 (Author, Commitor, Date)

git add example.py # example.py 파일 추가

git commit -m "add example.py" # example.py 파일 커밋

Git의 Branch

코드의 흐름을 분산

Branch → 가지치기🌿

https://user-images.githubusercontent.com/46367323/102051064-478cf980-3e27-11eb-8b26-ad57ddbbddae.png

개발을 진행하다보면 다음과 같은 일이 생긴다.

  • 새로운 기능을 추가
  • 오류와 같은 이슈가 발생하여 이슈에 대한 수정이 필요

👉가지치기를 통해 코드를 따로 가져와서 코드를 추가하거나 수정한다.

생성하기

git branch <branch_name>

: 'branch_name' Branch 새로 생성

📌master 라는 브랜치가 기본적으로 생성되어 있음!

  • git branch -v : 존재하는 브랜치 확인
git branch develop # develop 브랜치 생성

전환하기

git checkout <branch_name>

: 현재 작업중인 Branch를 'branch_name' 으로 전환

git checkout develop # develop 브랜치로 전환

# example.py 파일 내용을 수정...

git add example.py

git commit -m "modified example.py" # develop 브랜치에서 커밋을 하게 됨

병합하기

git merge <branch_name>

: 현재 작업중인 Branch를 원하는 'branch_name'에 병합

  1. Branch가 develop 인 상태에서 git log 를 실행하면 다음과 같은 화면이 뜬다.

    ![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F08f2d1cc-d4ac-4762-bfb8-a502dcac8a8d%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F08f2d1cc-d4ac-4762-bfb8-a502dcac8a8d%2Fimage.png)

    📌HEAD 는 현재 작업중인 Branch 를 가리키는 포인터!

  2. git checkout master, git log 실행

    ![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F4cf48b88-207a-456f-b8ba-17fe0999479e%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F4cf48b88-207a-456f-b8ba-17fe0999479e%2Fimage.png)

  3. git merge develop 실행

    ![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2Fcf23f889-581c-4b1d-bbf2-6e2dde2c505c%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2Fcf23f889-581c-4b1d-bbf2-6e2dde2c505c%2Fimage.png)

    👉fast-forward 방식으로 develop과 병합한다.

  4. git log 실행

    ![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F045a472e-b87e-4c7c-bd7f-c7881d1a6fac%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F045a472e-b87e-4c7c-bd7f-c7881d1a6fac%2Fimage.png)

    👉masterdevelop 은 같은 커밋을 가지게 되는것을 확인할 수 있다.

삭제하기

git branch -d <branch_name>

: 'branch_name' 삭제

  1. git branch -d develop 실행

    ![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F31e861e3-9b3f-4459-b2b0-ea17401c21a3%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F31e861e3-9b3f-4459-b2b0-ea17401c21a3%2Fimage.png)

  2. git log 실행

    ![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F8b618d99-cb2c-4588-a0ef-f4c00b64422a%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F8b618d99-cb2c-4588-a0ef-f4c00b64422a%2Fimage.png)

    👉develop 브랜치가 삭제된 것을 확인!

Git과 GitHub

GitHub: 원격저장소

GitHub 사이트 → GitHub 로그인 → 원격저장소 생성

GitHub와 연결하기

git remote add <별칭> <원격저장소 주소>

git remote add origin https://github.com/example/example.git

GitHub에 전달하기

git push <remote_repo_name> <branch_name>

: 로컬저장소에서 작업하던 정보들을 원격저장소에 전달

  • <remote_repo_name> : 전달받을 원격저장소
  • <branch_name> : 전달할 Branch

📌로컬 저장소에서는 기본 Branch로 master를 사용하지만,
GitHub에서는 main이라는 이름을 사용!

git branch -M main # 브랜치를 main으로 변경

git push origin main # 원격저장소에 반경

![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F4be62dac-3287-4f56-a695-5a7f2d378450%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F4be62dac-3287-4f56-a695-5a7f2d378450%2Fimage.png)

⭐GitHub로 과제 제출하기

  1. 과제가 있는 원격 저장소를 자신의 원격 저장소로 Fork 한다.
  2. 자신의 로컬 저장소에서 브랜치를 만들어 작업을 진행하고 Push 한다.
  3. 자신의 원격 저장소에서 과제 저장소로 Pull Request 한다.

원격 저장소에서 로컬 저장소로 가져오기

git clone <remote_repo> <folder_name>

  • <remote_repo> : 원격 저장소 주소
  • <folder_name> : 해당 원격 저장소의 파일을 저장할 폴더 이름 (default는 해당 원격 저장소의 이름)
git clone https://github.com/leeyongjoo/programmers_kdt_II.git
cd programmers_kdt_II
ls

![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2Fca071b93-d363-422b-8ea6-a98b58a109e5%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2Fca071b93-d363-422b-8ea6-a98b58a109e5%2Fimage.png)

브랜치 양식은 "해당주차""이름"

git branch -v
git branch week3이용주
git checkout week3이용주
git branch -v

![https://velog.velcdn.com/images%2Fleeyongjoo%2Fpost%2F38dd69bf-336e-44c6-a353-6ae6f3c53d30%2Fimage.png%5D(https%3A%2F%2Fimages.velog.io%2Fimages%2Fleeyongjoo%2Fpost%2F38dd69bf-336e-44c6-a353-6ae6f3c53d30%2Fimage.png)

pull request

Fork 해온 저장소에 수정한 내용을 반영하고 싶다고 요청을 보내는 것!

  • 제목은 [3주차] OOO(이름)

  • 내용은 어떤 내용을 바꿨는지 혹은 어떤 점이 어려웠는지 적을 것. (마크다운 문법 사용)

  • base repository : pr를 날릴 대상 / base: 과제가 나왔던 브랜치

  • head repository : pr을 날리고 있는 주체 / compare : 과제를 시도하기 전 브랜치

*pr: pull request

profile
하나씩 정리하는 개발공부로그입니다.
post-custom-banner

0개의 댓글