개발자 협업 필수 개념 git & github
기존에 notion을 활용해서 기록을 했기 때문에, 설명이 부족한 부분들이 있다 추후 기본적인 개념은 이 글에 추가 및 수정을 진행할 예정이고 매우 중요하다고 생각하는 내용들에 대해서는 추가적으로 게시글 포스팅을 진행하겠다.
기본개념
git init을 하면 .git 이라는 파일이 생김 → 로컬 저장소( 내가 만든 버전 정보 - 원격저장소 주소등이 저장)
한 폴더에 하나의 로컬 저장소만 유지
commit( = 버전: 하나의 최종 코드의 모음)
git commit -m “123123” // 123이라는 버전을 만듬
로컬저장소, 원격저장소
push
로컬저장소 → 원격저장소
git remote add origin http://github.com/dongury1114/name
git push origin master
push는 권한이 있는 개발자만
클론 이후 점 찍어서 새로운 폴더 생성 막기(나중에 다시 실습해보기)
권한주기 ****(collaborator)
setting → manage access → invite a collaborator
이메일을 check
clone
원격저장소를 내 컴퓨터에 받아오기
git clone 이후 가져오는 것은 git pull
소스트리
작업공간 → 스테이지 → 로컬저장소(스케이지 포함) → 원격저장소
- 작업 공간에 있는 수정한 추적안됨 파일을 스테이지로 올려 스테이지됨으로 변경
크게 두가지 상태(git status)
추척안됨(untracked)
파일이 Git 저장소에는 있지만 Git에 의해서 관리되고 있지 않은 파일
*unmodified, modified, staged 세 가지 상태 외에는 모두 untracked
untracked 파일은 git에서 추적하고 있지 않기 때문에 손상되었을때 git으로 복구할 수 없음
추적됨(tracked)
- 수정 없음(unmodified): 파일이 수정되지 않은 상태(=파일이 최근에 저장한 상태 그대로임)
- 수정함(modified): 파일이 수정된 상태(=파일이 최근에 저장한 파일과 달라짐)
- 스테이지됨(staged): 파일을 저장할 예정인 상태(=이 파일을 저장할 것)
git status를 통해 상태 확인 가능
브랜치
커밋에서 분리해서 브랜치를 만듬
master 명령어는 master 브렌치에 커밋을 푸시해라
git branch cat
- cat 브랜치를 현재 시점에 만들어라
git checkout cat
- cat 브랜치로 이동해라
fetch:정보만 새로고침
pull:파일을 내려받음
merge: 브랜치를 병합
충돌: conflict
빨리감기된 머지 (fast forward)
충돌이 발생하면 둘다 보여준다
vscode의 편의 기능을 활용하여 쉽게 current or incomming 선택 가능 or can make new one
포크
push 권한이 없을 때 repository를 복사하여 기여가능
저장소를 통째로 복제 →커밋 푸시 내담대로 하고 → 원본에 병합 요청
브랜치, 포크 분기점을 나누는 방식인거는 동일
clone → 저장소 복제 → 원본 url(내가 받아오고 싶은 url address)
clone과 fork 구분
원본저장소에 변경이력을 보고 싶으면, 새 원격을 추가하여, 변경이력을 볼 수 있다.
커밋과 커밋을 합쳐줘: 풀 리퀘스트 (하나의 저장소에서 가능, 다른 포크에서도 가능)
협업시 풀리퀘스트((PR)를 사용하는것을 권장
오픈소스에 PR을 보낼때는 contributing guide 참고해서
레포에서 풀리퀘스트 버튼 클릭꾸
오른쪽 부터 읽기
ammend
커밋 후 하나더 수정후 커밋하고 싶다
커밋옵션 → 마지막 커밋 수정→이력변경 확인 하기
*이력변경은 항상 조심하기
stash
변경사항을 잠시 킵해두고 싶어요, 커밋은 안만들래요
변경사항을 서랍에 넣어두기 → 스태시 버튼
왼쪽메뉴에서 치워두기에서 스태시 불러오기
reset
옛날 커밋으로 브랜치를 돌리고싶다
하드
우클릭 후 master를 이 커밋으로 초기화
초기화 후 푸시를 하면 에러가 나온다
force push
설정 → 고급 → 강제푸시를 허용
푸시시 강제푸시
revert
이 커밋의 변경사항을 되돌리고 싶어요
우클릭 커밋 되돌리기
cherrypick
저 커밋 하나만 떼서 지금 브랜치에 붙이고 싶어요
우클릭 체리픽
머지는 아닌데 붙이기