개발

개발자 협업 필수 개념 git & github

donggyu 2022. 4. 20. 00:36
반응형

기존에 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

저 커밋 하나만 떼서 지금 브랜치에 붙이고 싶어요

우클릭 체리픽

머지는 아닌데 붙이기

반응형