학습요약19> 19강 git 저장소+사용하기

개프꼬·2023년 2월 16일
0

※블로그 내용은 저 '개인'의 기준으로 더 필요하다고 생각되는, 또는 한번 더 짚어보는 의미로 대부분 직접 필기한 것입니다. 수희 혼자 볼라고 쓴 블로그

<저장소>

Local Repository _ Remote Repository(이론+실습)

  • 저장소(Repository)?
    파일이나 폴더를 저장하는 곳. Git 저장소는 파일변경 이력 별로 구분되어 저장.
    snaphot=파일이나 폴더를 사진 찍듯 순간의 상태를 저장.

Local Repository? 내pc에 파일이 저장되는 개인 전용 저장 공간.
Local Repository 생성>
원하는 폴더 생성> 해당 폴더에서 git init 명령어 입력> .git 폴더 생성확인

  • Remote Repository? 파일이 전용서버(github)에서 관리 되며 여러 사람이 함께 공유
    Remote Repository생성> github를 통해 생성.

Local Repository 실습:
사용자 폴더에 GitInitTest 폴더 만들고, git bash 켜서
cd GitInitTest 엔터 / ls -al 엔터 / git init 엔터 =로컬 레포지토리에 있는 정보 저장.
소스가 워킹 디렉토리..

Remote Repository 실습:
깃허브 로그인 가서 좌측 상단에 Top Repositories 옆에 new버튼>
Repository name 이름 설정> Description (optional) 설명란 >
Public 체크시 다른사람도 내꺼 볼수 있고 Private은 내가 허용한 사람들만 봐 >
Add a README file 체크박스 등 추가 가능 >
Add .gitignore 선택바에서 예를 들어 node선택시 노드의 기본 탬플릿을 생성해줌>
Choose a license는 공개된 소스에 대한 라이센스 부여. 종류 여러가지.. >
Create repository 버튼 >
아래 ...or create a nes 레포지토리... 에 처음 하는 사람들에게 알려주는 명령어있음


<깃 사용하기>

1. clone

회사에서 상사 : "프로젝트 레파지토리 클론 받아서 작업 시작해줘"

Local Repository 방식=
로컬에서 작업하기 위해 Remote Repository를 복제해
내 pc에 Local Repository로 저장하는 것.


소스트리를 이용해서 clone: ※이 부분 질의응답 보니 다들 막힘.나도..
1. github 원격 저장소에서 ssh주소 복사.
2. sourcetree 켜서 로컬에서 새로 만들기 누르고 > URL에서 복제 누름 .
3. 복사한 ssh주소를 원본 url 부분에 복사하고
목적지 경로에 복사할 폴더 설정 / 이름 설정하고 /클론 버튼
=로컬 레파지토리 만들어짐.
※삭제시 휴지통으로 이동 누르면 폴더에만 삭제. 북마크까지 삭제해야 완전 삭제.


Remote Repository방식=
Remote Repository 확인하고 이것을 통해 클론 하는것을 실습:
소스트리 원격에서 깃허브 계정 연결된 목록에서
깃허브 글씨 아래, Remote Repository 선택 후, 우측 클론 버튼> 로컬에 저장.


3. Add, Commit, Push, Pull(이론+실습)

add란?

변경된 파일 중 Repository에 올릴 파일들을 등록.

  • 내pc 방식=나의 작업폴더(working directory)를 add해서 파일등록 영역(staging area)

  • 온라인 방식=github Remote Repository(원격 저장소)

  • 스테이지에 올라가 있는 않는 파일을 올리는것을 add라고 함.
    스테이지에 올라가지 않는 파일=변경이 있었던 파일들
    테이지이지에 올라간 파일=staging area


commit이란?

add로 등록된 파일들을 한 덩어리로 만들고 메시지 추가해 로컬저장소에 올림

  • 내pc 방식=나의 작업폴더(working directory)를 파일등록 영역(staging area)후,
    commit해서 Local Repository에 저장,
  • 온라인 방식=github Remote Repository(원격 저장소)

push란?

  • commit 되어 로컬 저장소에서 변경이 된 파일들을 원격 저장소로 전달.공유 개념.
  • 나의 작업폴더(working directory)를 파일등록 영역(staging area)후,
    commit해서 Local Repository에 저장후, github Remote Repository(원격 저장소)에 저장.
    ※푸시 완료 후 없던 origin(원격저장소)이 생긴다.

히스토리와 checkout


★★pull이란?

  • 원격저장소의 변경사항을 로컬 저장소로 가져옴과 동시에 내 작업 소스에 합침.
    github Remote Repository(원격 저장소)에서 Fetch해서 Local Repository에 땡겨옴.
    그후, Merge하면 나의 작업폴더(working directory)에 저장. 즉, pull= fetch + merge

  • fetch: 원격 저장소의 소스를 로컬 저장소로 받아와 일치 시킨다.(내 작없소스에는 반영x)

  • merge: fetch해 온 로컬 저장소의 소스를 내 작업 소스에 합친다.
    (합칠 때 같은 부분의 소스가 다를 경우 충돌 발생!)


    pull을 하는 상황은 언제 발생할까?
    원격 저장소는 여러 프로젝트 개발 인원들이 동시에 사용.
    다른 개발자가 변경 상태를 push해 원격 저장소에 반영한다면
    내 입장에서는 원격 저장소에 변경사항이 발생한 것!


    pull하기 : 다른 개발자가 push해 원격 저장소가 변경 되어 pull할거리가 생기면
    상단 풀 아이콘에 숫자가 생김.
    히스토리에도 origin과 로컬 저장소의 현재 시점이 다르게 표시


    ★실습영상=스테이지에 올라가 있는 않는 파일을 올리는것을 add→
    커밋 메세지 써서 커밋 누르는게 commit →
    로컬스토리에 변경이 생김녀 푸시버튼에 숫자 뜸 push→
    다른 사람들이 변경하면 풀버튼에 숫자 뜸 pull


★4. Branch(이론+실습)>

나뭇가지를 의미. 기존에 만들어 놓은 버전(main)에서 복사해
새로운 가지를 만들어 다른 방향으로 작업을 이어 나가는 것.

  • 소스트리 상단에 브랜치라는 버튼 누름> 새브랜치 창에 이름 설정 후,
    새브랜치 체크아웃(브랜치를 생성한 뒤 현재 작업 소스를
    해당 브랜치의 상태로 변경(Head의 이동)) 후, 브랜치 생성버튼

브랜치 생성 후 커밋→ 푸시

  • 브랜치 생성 직후: 가지는 생겻지만 소스의 상태가 같기 때문에 한줄에 표시
    변경 사항이 없어 브랜치는 로컬 저장소에만 반영되있는 상태
  • main 브랜치 커밋& 푸시: feature1 브랜치는 가만 있고 main브랜치만 뻗어나감.
    main브랜치는 우너격 저장소에까지 반영됨(가지가 일자로 뻗어나간 모양새)
  • feature1 브랜치 커밋& 푸시:
    feature1 브랜치와 main브랜치가 서로 다른 방향으로 뻗어나감
    (가지가 갈라지는 모양새) ★실습영상 한번 다시바봐

5. Merge(이론+실습)★★

  • 각각의 브랜치에서 작업이 완료된 후 통합브랜치(main)로 모아 합치는 작업.

merge 후 결과 브랜치로 체크아웃 후 merge대상 브랜치에서 merge!
(feature1 우클릭>merge feature1 into main클릭)
/ merge할 커밋 시점을 선택해 merge하는 것도 가능!
★실습영상 한번 다시바봐


6. Conflict해결(이론+실습) >★★

conflict(충돌) 발생! 브랜치를 merge할때 발생할 수 있다
같은 파일 부분을 수정한 브랜치들을 merge할때 발생
ex) 같은 파일 index.html의 p태그가 서로 다를때 라든지

merge시 충돌이 일어나서? main브랜치에 feature1 브랜치를 머지 한다면?(충돌병합)
양자 택일후, 느낌표 뜨면 우클릭>충돌 해결하기>해결된 것으로 표시


7. Fork복제(이론+실습)

fork란? 다른 사람의 원격 저장소에서 어떤 부분을 수정하거나 추가 기능을 넣고 싶을때 해당 원격 저장소를 내 원격 저장소에 그대로 복제 하는것, 전문 용어로 "포크뜬다"라고 표현.

  • 온라인에서, 남의 원격저장소에서 fork복제→나의 원격저장소에 붙여넣→클론 복제→
    내 pc의 로컬저장소/ 나의 작업폴더로 가져옴

다른 사람꺼 복제해서 내꺼로 수정해서 쓰고 싶을때 포크 복제사용.

fork복제: 다른 계정으로 접속 / 원하는 레포지토리에 깃허브 페이지 접속후 fork버튼→


8. Pull Request(이론+실습) >풀 해달라고 요청.

Pull Request란? 다른 사람에게 내 브랜치를 merge해 달라고 요청
사례1: 한 원격 저장소에서 내 브랜치를 merge 하기 전 피드백을 요청
사례2: fork 뜬 저장소에서 원본 저장소에 개발 완료 후 원본 저장소에 merge를 요청
어떤 부분을 어떻게 수정했는지,
피드백 요청하는 부분은 정확히 어떤 파일의 어느 부분인지 기입.

feature1 브랜치에 푸시→깃허브 페이지에 compare & pull request 버튼 생김 or
세번째 pull requests 탭 클릭해서 생성.

pull request한 저장소 & 브랜치 / merge 대상 저장소 &브랜치를 선택 할 수 있다.
★실습영상 한번 다시바봐

profile
개발자_프론트엔드_꼬리에 꼬리를 무는 호기심

0개의 댓글