1. Clone
1) 정의
로컬에서 작업하기 위해 Remote Repository를 복제해 내 pc의 Local Repository로 저장
소스파일, 변경이력, 설정을 복제하여 내 pc에 저장**(Local Repository를 생성)**
2) clone 방법
- ssh 방식 : ssh key를 github에 미리 등록하여 클론할 컴퓨터가 원격저장소의 프로젝트에 접근할 권한이 있는지 체크
- https 방식 : 보안상의 문제로 권장하지는 않음3. Clone하기소스트리를 이용한 clone
- github 원격저장소에서 ssh주소 복사
- 소스트리에 url에서 복제를 선택
- 복사한 ssh 주소입력, 복사할 폴더 설정, 이름설정(Local repositiry의 이름)
- clone 완료 → .git 폴더까지 생성됨
2. Add, Commit, Push, Pull
1) Add
변경된 파일 중 Repository에 올릴 파일들을 등록
- 내 pc(working directory)에서 올리고 싶은 파일을 staging area에 등록
git add
2) Commit
- Add로 등록된 파일들을 한 덩어리로 묶고, 메시지를 추가해 Local 저장소에 업로드
3) push
- commit되어 로컬 저장소에서 변경이 된 파일들을 원격저장소로 올리는 단계
- push이전까지는 내pc에서만 진행됨
- origin : 원격저장소
4) pull
- 원격저장소의 변경사항을 로컬 저장소로 가져오고 내 작업소스에 합침
- fetch(원격저장소의 로컬저장소로) + merge(로컬저장소에서 내작업파일로 합치는 것)
- fetch : 원격 저장소의 소스를 로컬 저장소로 받아옴(내 작업 소스에는 반영되지 않음)
- merge: fetch해온 로컬 저장소의 소르를 내 작업 소스에 합침
3. Branch
새로운 가지를 만들어 다른방향으로 작업을 이어나가는 것
- 브랜치 생성 : 브랜치 이름 작성 후 생성(feature1)
- 새 브랜치 체크아웃 : 브랜치를 생성한 후 현재 작업 소스를 해당 브랜치의 상태로 변경
- 생성 직후에는 변경사항이 없어 브랜치는 로컬 저장소에만 반영되어있음
- main 브랜치에 커밋 & 푸시
- feature1 브랜치는 가만이 있고 main 브랜치만 뻗어나감
- main 브랜치는 원격 저장소에까지 반영됨
- feature1 브랜치에 커밋 & 푸시
- feature1 브랜치와 main 브랜치가 서로 다른 방향으로 뻗어나감
- 원격저장소에 feature1 브랜치 생성됨
4. Merge
각각의 브랜치에서 작업이 완료된 후 통합 브랜치(Main)으로 모아 합치는 작업
- 기준이 되는 브랜치(main)로 체크아웃
- merge 대상 브랜치(featrue)에서 merge 진행
5. Conflict
Branch를 Merge 할 때 발생할 수 있음
같은 파일의 같은 부분을 수정한 브랜치들을 merge할때 발생
- merget시 충돌이 일어나면, 메시지 발생(해결해야할 병합 충돌이 있음을 안내)
- 충돌 브랜치들의 내용을 각각 보여줌 -> 양자택일 필요
- vsc에서도 확인가능
다른 팀원과 함께 브랜치를 머지할때는 해당 작업자와 논의 필요!
6. Fork 복제
다른 사람의 원격저장소에서 어떤 부분을 수정하고나 추가 기능을 넣고 싶을때 해당 원격 저장소를 재 원격 저장소에 그대로 복제하는 것
- 다른 계정으로 접속
- 원하는 레포지토리의 깃헙 페이지 접속 후 fork 버튼 클릭
fork 🆚 clone
- fork : 다른 사람의 원격저장소를 내 계정의 깃헙 원격저장소로 복제
- clone : 원격저장소에서 내 로컬 저장소로 복제
7. Git Cli 명령어
- git clone [원격 저장소 주소]
- git status : 저장소 상태 보기
- git add & git status
👉🏻 git add 후 status 확인해보기
- git restore --staged [파일경로] : staging했던 파일 다시 working directory로 내리기
👉🏻 git restore로 staging되었던 파일을 다시 working directory로 내렸을때 status 확인해보기
- git push
- git log --decorate --graph