[3주차 Day 2] 참고: Git
Git?
Git이란?
분산 버전관리 시스템!
여러 사람이 한 번에 코드를 관리하려면 어떻게 해야 할까?
→ 코드를 분산해서, 버전을 나눠 관리할 필요가 있다!
Git의 전체 구조
Git은 저장소(Repository)별로 관리됨!
- Repository : 저장소
중앙에 원격 저장소를 두고 이를 바탕으로 로컬 저장소를 여러 개 둠
- 로컬 저장소
- 실제 우리가 작업할 공간
- Git이 관리
- 원격 저장소
- (진짜_진짜_최종)인 애들 저장되는 곳
- Github가 관리
Git 시작하기
Git도 소프트웨어의 일종이기 때문에 설치가 필요하다!
운영체제에 맞게 설치 (설치링크 : https://git-scm.com/book/ko/v2/시작하기-Git-설치 )
Git 저장소에서 파일의 상태
Git은 commit 단위로 진행됨
유저의 모든 작업사항을 저장하기엔 효율이 떨어지게 됨!
commit은 스냅샷 같은 것으로, 유저가 임의로 지금 저장해줘! 라고 하는 것을 commit한다 라고 생각하면 됨
로컬 저장소는 크게 3가지로 나뉨, 각 단계는 commit을 위한 진행단계로 보면 됨
-
Working Directory
- Unstaged 라고도부름
- commit에 반영하지 않는 파일들이 여기에 해당됨
- 이 들 중에 commit에 추가할 사항만 골라서
git add
명령어를 통해 Staging Area로 넘겨줌
-
Staging Area
- Staged 상태의 코드, 파일들이 있는 곳
git add
로 추가된 것들을git commit
명령어를 통해 스냅샷을 찍어 다음 commit으로 넘긴다
-
Repository
- committed 상태의 코드, 파일들이 있는 곳
- commit 단위로 버전이 관리됨
Git의 Branch
Git의 분산 기능을 수행!
Git의 Branch란?
코드의 흐름을 분산 - 가지치기!
코드를 짤 때, 버그나 새로운 기능 추가 등 이슈가 생길 수 있음
이 때 해당 코드를 가지치기에서 독립적인 공간에서 해당 이슈를 처리하고 main 코드는 계속 개발해 나가도록 관리할 수 있음
이후 나중에는 가지치기한 코드를 합쳐 최신 코드를 생성!
Git과 Github
Github란?
가장 대중적인 원격저장소 https://github.com
Git의 로컬저장소(혼자 개발할 때)에서 할 수 있는 일들을 다뤘으니 다른사람과의 협업을 해보자!
github에서 repository를 생성 → 원격 저장소 설명
Git 명령어
- 로컬 저장소 생성
- 현재 작업 중인 디렉토리를 git 저장소로 지정
git init
- 현재 Git 저장소의 상태 확인
git status
- 커밋에 반영할 파일 지정
git add <추가할 파일>
- example.py를 생성(혹은 수정)하고, 이를 commit에 반영하고 싶은 경우
- unstaged 상태의 파일을 staged 상태로 바꾸는 과정
- example.py를 다음 commit에 넣겠다고 선언한 것임!
git add example.py
- Git 로컬저장소에 commit 남기기
git commit -m <커밋 메시지>
- 변경사항이 반영된 New Commit 생성
git commit -m "add example.py"
- Commit 기록 확인
- 그동안의 로그를 확인할 수 있음
git log
- Branch 생성
git branch <브랜치 이름>
- Git에는 기본적인 branch가 하나 존재함 → master branch
- master로부터 develop branch를 새로 생성
git branch develop
- Branch 확인
git branch -v
- Branch 전환
git checkout <브랜치 이름>
- 현재 작업 중인 branch를 전환
git checkout develop
- Branch 병합
git merge <브랜치 이름>
- 현재 작업중인 branch를 원하는 branch에 병합
- 현재 branch에 지정한 branch 가 남긴 commit들을 적용(fast-forward 방식)
git merge develop
- Branch 삭제
git branch -d <브랜치 이름>
- 지정한 branch 삭제
git branch -d develop
- 원격저장소 등록
git remote add <별칭> <원격저장소 주소>
git remote add orgin github원격저장소링크
- 원격저장소 확인
git remote -v
- 원격저장소에 로컬저장소 내용 전달
git push <remote_repo_name> <branch_name>
- 원격 저장소에 로컬저장소의 어떤 브랜치를 전달할건지 선택하여 push
- github의 경우 master 브랜치를 main으로 쓰기 때문에 master 브랜치 이름을 main으로 변경해줘야 함
git push origin main
- 브랜치 이름 변경
git branch -M <변경할 이름>
- 현재 branch 이름을 main으로 변경
git branch -M main
- 원격저장소에서 로컬 저장소로 가져오기
git clone <원격저장소 주소> <해당 원격저장소 파일을 담을 폴더 이름, default 값: 해당 원격저장소 이름>
git clone github 원격저장소주소 programmers
-
Github 과제 제출 방법
- 과제가 있는 원격 저장소를 자신의 원격 저장소로 Fork한다
- Fork : 해당 원격 저장소를 나의 원격 저장소로 복사(가져오기)
- 자신의 로컬 저장소에서 브랜치를 만들어 작업을 진행하고 Push한다
- 자신의 원격 저장소에서 과제 저장소로 Pull Request 한다
Author And Source
이 문제에 관하여([3주차 Day 2] 참고: Git), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@pengu/3주차-Day-2-참고-Git
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 현재 작업 중인 디렉토리를 git 저장소로 지정
git init
git status
git add <추가할 파일>
- example.py를 생성(혹은 수정)하고, 이를 commit에 반영하고 싶은 경우
- unstaged 상태의 파일을 staged 상태로 바꾸는 과정
- example.py를 다음 commit에 넣겠다고 선언한 것임!
git add example.py
git commit -m <커밋 메시지>
- 변경사항이 반영된 New Commit 생성
git commit -m "add example.py"
- 그동안의 로그를 확인할 수 있음
git log
git branch <브랜치 이름>
- Git에는 기본적인 branch가 하나 존재함 → master branch
- master로부터 develop branch를 새로 생성
git branch develop
git branch -v
git checkout <브랜치 이름>
- 현재 작업 중인 branch를 전환
git checkout develop
git merge <브랜치 이름>
- 현재 작업중인 branch를 원하는 branch에 병합
- 현재 branch에 지정한 branch 가 남긴 commit들을 적용(fast-forward 방식)
git merge develop
git branch -d <브랜치 이름>
- 지정한 branch 삭제
git branch -d develop
git remote add <별칭> <원격저장소 주소>
git remote add orgin github원격저장소링크
git remote -v
git push <remote_repo_name> <branch_name>
- 원격 저장소에 로컬저장소의 어떤 브랜치를 전달할건지 선택하여 push
- github의 경우 master 브랜치를 main으로 쓰기 때문에 master 브랜치 이름을 main으로 변경해줘야 함
git push origin main
git branch -M <변경할 이름>
- 현재 branch 이름을 main으로 변경
git branch -M main
git clone <원격저장소 주소> <해당 원격저장소 파일을 담을 폴더 이름, default 값: 해당 원격저장소 이름>
git clone github 원격저장소주소 programmers
Github 과제 제출 방법
- 과제가 있는 원격 저장소를 자신의 원격 저장소로 Fork한다
- Fork : 해당 원격 저장소를 나의 원격 저장소로 복사(가져오기)
- 자신의 로컬 저장소에서 브랜치를 만들어 작업을 진행하고 Push한다
- 자신의 원격 저장소에서 과제 저장소로 Pull Request 한다
Author And Source
이 문제에 관하여([3주차 Day 2] 참고: Git), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pengu/3주차-Day-2-참고-Git저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)