Git
- Git?
- Git의 Branch
- Git과 Github
Git?
분산 버전관리 시스템
- 코드를 관리하는 데에 있어서 일을 분산
- 공용 코드 공간을 만들고 각자가 코드를 가져가서 비동기적(순서 상관없이)으로 자신이 작업한 것을
업로드 하는 구조
- 공용 코드 공간을 만들고 각자가 코드를 가져가서 비동기적(순서 상관없이)으로 자신이 작업한 것을
\(\Rightarrow\) 독립적으로 작업이 가능하고, 다른 사람이 작업한 것이 있으면 저장소가 갱신이 되고
자신의 코드에 반영해서 작업할 수 있다.
- 코드의 버전 관리
Git 시작하기
Git 홈페이지에 접속해서 Git 설치
로컬 저장소 생성
다음 명령을 통해 현재 작업중인 디렉토리를 git 저장소로 지정할 수 있음git init
Git 저장소에서 파일의 상태
LOCAL : 로컬 저장소
REMOTE : 원격 저장소 (Github)
- Working Directory : 커밋에 반영되지 않은 파일들 (unstaged)
- Staging Area : 커밋을 남길 파일들 (staged)
- Repository : 커밋된 파일들 (committed)
Git 기본 명령어
git add
파일을 Staging Area 에 추가
Ex) git add example.py
: example.py 를 생성(혹은 수정) 하고, 이를 commit에 반영하고자 추가
git status
Git 프로젝트 내의 파일 상태를 확인
git commit -m
커밋 메시지와 함께 커밋
Ex) 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 \(\rightarrow\) 가지치기
개발을 진행하다보면 다음과 같은 일이 생긴다.
- 새로운 기능을 추가
- 오류와 같은 이슈가 발생하여 이슈에 대한 수정이 필요
\(\rightarrow\) 가지치기를 통해 코드를 따로 가져와서 코드를 추가하거나 수정한다.
생성하기
git branch <branch_name>
'branch_name'의 이름을 가진 Branch 새로 생성
처음 저장소를 만들면 master
라는 branch가 생성되어 있음
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 "added example.py" # develop 브랜치에서 커밋을 하게 됨
병합하기
git merge <branch_name>
현재 작업중인 branch를 원하는 'branch_name'에 병합
- Branch가 develop인 상태에서
git log
를 실행하면 다음과 같은 화면이 뜬다.
+) HEAD
는 현재 작업중인 Branch를 가리키는 포인터
git checkout master
,git log
실행
git merge develop
실행
\(\Rightarrow\) fast-forward 방식으로 master와 develop가 병합
git log
실행
\(\Rightarrow\) master와 develop은 같은 커밋을 가지게 되는 것을 확인
삭제하기
git branch -d <branch_name>
'branch_name` 삭제
git branch -d develop
실행git log
실행
\(\Rightarrow\) develop 브랜치가 삭제된 것을 확인
Git과 GitHub
GitHub : 원격저장소
Github과 연결하기
git remote add <별칭> <원격저장소 주소>
- <별칭> 에는 주로 'origin'을 사용
- <원격저장소 주소>는 Github 홈페이지에서 생성한 원격저장소에서 얻을 수 있음
Github에 전달하기
git push <remote_repo_name> <branch_name>
로컬저장소에서 작업하던 정보들을 원격저장소에 전달
- : 전달받을 원격저장소
- : 전달할 Branch
로컬 저장소에서는 기본 Branch로 master를 사용하지만, Github에서는 main을 사용
git branch -M main # 현재 브랜치 이름을 main으로 변경
git push origin main # 원격저장소에 반영
Github로 과제 제출하기
- 과제가 있는 원격 저장소를 자신의 원격 저장소로
Fork
한다. - 자신의 로컬 저장소에서 브랜치를 만들어 작업을 진행하고
Push
한다. - 자신의 원격 저장소에서 과제 저장소로
Pull Request
한다.
1. 원격저장소에서 로컬 저장소로 가져오기
- : 원격 저장소 주소
- : 해당 원격 저장소의 파일을 저장할 폴더 이름 (default는 해당 원격 저장소의 이름)
git clone https://github.com/leeyongjoo/programmers_kdt_II.git programmers
브랜치 만들기
git branch -v
git branch week3_김도영
git checkout week3_김도영
Pull Request
pr : Pull RequestFork
해온 저장소에 수정한 내용을 반영하고 싶다고 요청을 보내는 것
- base repository : pr을 날릴 대상 / base : 과제가 나왔던 브랜치
- head repository : pr을 날리고 있는 주체 / compare : 과제를 시도하기 전 브랜치
'프로그래머스인공지능스쿨' 카테고리의 다른 글
[3주차 - Day3] Python으로 데이터 다루기 II - Pandas (0) | 2021.05.05 |
---|---|
[3주차 - Day2] Python으로 데이터 다루기 I - numpy (0) | 2021.05.04 |
[3주차 - Day1] 인공지능 수학 - 추정, 검정, 엔트로피 (0) | 2021.05.03 |
[2주차 - Day4] 인공지능 수학 - 확률과 확률분포(2) (0) | 2021.04.29 |
[2주차 - Day4] 인공지능 수학 - 확률과 확률분포(1) (0) | 2021.04.29 |