📌Git
- 로컬에서 관리되는 버전 관리 시스템(VCS: Version Control System)
- 소스코드 수정에 따른 버전을 관리해주는 시스템
📌Github
- 클라우드 방식으로 관리되는 버전 관리 시스템(VCS)
- 자체 구축이 아닌 빌려쓰는 클라우드 개념
- 오픈소스는 일정 부분 무료로 저장 가능, 아닐 경우 유료 사용
간단히 Git은 로컬에서 버전 관리 시스템을 운영하는 방식이고 Github는 저장소를 깃허브에서 제공해주는 클라우드 서버를 이용한다는 것의 차이이다. 따라서 다른 사람들과 협업할 경우, 오픈소스를 공유하고 다른 사람들의 의견을 듣고 싶은 경우 등은 Github를 써서 편리하게 기능을 사용할 수 있다.
버전 관리 시스템(VCS)이란 쉽게 말해 코드가 변경된 부분을 모두 기억해준다는 의미이다. 코드가 수정될 때마다 파일로 일일이 따로 저장해주거나 수동으로 백업해두기는 매우 번거로운 일인데, 이런 일을 대신해준다. 어떤 부분이 수정됐는지 쉽게 볼 수 있고 수정된 부분을 이전 버전으로 롤백하는 등의 편리한 기능들을 가지고 있다. 코드 수정에 따른 위험성을 줄일 수 있기 때문에 개발자에게 필수적인 시스템이다.
1. Setup(내가 내 깃허브에 파일 업로드)
터미널에서 실행
echo "# project_name" >> READE.md
git init # 프로젝트 업로드 시작할 때
git add . # add . : 모든 파일 업로드, add 파일명 : 해당 파일 업로드
git status # 상태를 알려줌
git commit -m "first commit"
git remote add origin git@github.com:github_name/project_name.git # 해당 레파지토리로 소스코드 보내기
git remote -v # 연결고리 확인(해당 레파지토리 주소가 뜨면 연결 성공)
git push origin master
# 코드를 수정하고 다시 깃허브에 push
git add .
git status # modified: 수정한 파일명
git commit -m "second commit"
git push origin master
2. 그룹프로젝트
2-1. 브랜치 셋팅(master, develop)
develop 브랜치: 개발자가 자유롭게 개발하는 브랜치
git checkout -b develop # switched to a new branch 'develop' (master) -> (develop)
git push --set-upstream origin develop # 로컬에서 만든 develop브랜치를 깃허브에 업로드
master <- develop <- feature-A(내가 사용하는 연습장)
feature-A 브랜치: Choose a source branch-> develop 선택
git fetch origin
git checkout feature-A # switched to a new branch 'feature-A'
다른 팀원은 feature-B에 업로드 하도록 설정
2-2. 다른 팀원이 feature-B 브랜치에 업로드
git fetch origin
git checkout feature-B # (master) -> (feature-B)
# 작업한 소스코드 업로드
git add .
git commit -m "feature-B"
git push
2-3. 다른 팀원이 feture-B 에서 develop으로 업로드
Create pull request 클릭
2-4. 코드 리뷰하기(리더)
Approve 클릭하여 코드 승인
2-5. 코드 승인 받은 후, 코드 Merge pull request
2-6. develop을 master에 업로드
New pull request 만들기
Approve클릭 -> Merge pull request클릭
=>master에 업로드 성공
📍"This branch has confilicts that must be resolved"
: 버전이 다르기 때문에 충돌 발생
command line을 활용하여 충돌 해결하기
1. develop 브랜치에 최신코드 가져오기
git checkout develop
git pull origin develop
2. 다시 내 브랜치로 돌아오기(feature-A)
git checkout - # - : 직전에 있던 branch로 이동
3. 내 브랜치에서 develop과 merge 하기
git merge develop
4. 팀원과 충돌 해결하기(의논)
5. 최종코드가 잘 돌아가는지 확인하기
6. 완성된 코드 다시 올리기 (feature-A로)
git add .
git commit -m "resolve conflict"
git push
7. confilct 해결됨
Approve클릭 -> Merge pull request클릭
=> develop에 업로드 성공
3. 다른 사용자(예, freshman)가 내 github에 업로드하기
코드 clone 하기
git clone git@github.com:github_name/project_name.git freshman # freshman이 깃허브에 있는 코드 다운받기
cd freshman
code .
# freshman이 코드를 추가하고 깃허브에 업로드(main에 업로드X)
# 터미널을 연다
git add .
git commit -m "freshman first commit"
pit push origin freshman # freshman이라는 저장소에 업로드 (master) -> (freshman)으로 바뀜
freshman은 깃허브로 돌아와서 Compare&pull request 클릭
짧은 글 작성하고 Create pull request 클릭(master에 pull 요청)
사용자는 branch에서 master와 freshman 저장소를 볼 수 있으며 Pull requests에는 freshman이 작성한 코드를 볼 수 있다.
Merge pull request: freshman코드와 내 코드 병합(=master에 병합)
깃허브에 있는 코드(master)는 freshman의 코드가 있지만 현재 작성 중인 코딩프로그램에는 내가 작성한 코드만 존재
-> 깃허브의 코드(master)를 현재 프로그램에 적용시켜야 됨(master에 있는 코드랑 동기화)
# 터미널을 연다
git add . # 현재 코드 저장
git commit -m "second commit"
pull origin master # push X
# master 브랜치로부터 새로운 코드를 받아온다(동기화)
freshman이 작성한 코드가 동기화 되었으면 이제 내가 추가로 작성한 코드를 push한다.
git push origin master
-> pull, push 를 계속해서 반복하면서 협업을 할 수 있다.
'cs지식 > 개발 상식' 카테고리의 다른 글
[네이버클라우드캠프] 2024 서포터즈 🍀'클로버 (CLOVER)'🍀 - IT 에 관심 있는 분 지원하세요🔥 (6) | 2024.10.21 |
---|