수업 복습/Node.js

11월 1일 수업 내용 - Node.js - Git / Day04

김복칠 2023. 11. 1. 16:03

1. Git : 버전 관리 시스템의 종류

- 버전관리 : 여러 파일을 하나의 버전으로 묶어 관리하는 것

 

2. 버전관리 시스템의 종류

- 클라이언트(서버모델)

  • 하나의 중앙 서버로 여러 클라이언트들이 각자 필요한것만 가져와서 작업을 하고 다시 중앙 서버로 보내서 통합하는 방식
  • SVN, CVS

- 분산 모델

  • 하나의 중앙 서버가 존재하지만, 여러 클라이언트들은 각자의 컴퓨터 저장소에 전체 사본을 가지고 작업하는 방식
  • Git

3. Git의 장점

- 동시에 작업하는 사람들과 소스코드를 주고받을 필요가 없음

- 같은 파일을 여러명이 동시에 병렬 개발이 가능

- 변동 과정을 체계적으로 관리할 수 있고, 언제든지 지난 시점의 버전으로 되돌릴 수 있음

- 인터넷이 연결되징 않는 곳에서도 개발을 진행할 수 있고, 중앙 서버의 데이터가 유실되어도 다시 복구할 수 있음

 

4. Git 설치

- 구글에서 'git 설치' 검색
- 왼쪽 메뉴에서 downloads를 클릭
(https://git-scm.com/downloads)
- 모니터에 있는 다운로드 버튼을 클릭
- 64-bit Git for Windows Setup. 클릭 후 다운로드 및 설치
(기본설정으로 설치)

- 설치 확인(Git - Git Bash)

git --version

 

5. Git 명령어

- 프로젝트 디렉토리 내에 로컬 저장소를 생성(cd C:\songji\KDT\Git\Day1)

  • 원하는 프로젝트 위치로 이동 후 "git init" 를 실행

- git 버전 관리할 파일을 선택

  • git add index.html(stage에 올림)

-하나의 버전으로 만들기

  • git commit -m " index.html의 첫 커밋"

- 만약 아래와 같이 에러가 발생하는 경우 다음 명령어를 입력하여 해결함

<에러>
Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'Administrator@DESKTOP-HUJUVSS.(none)')
<명령어>
git config --global user.email "you@example.com(이메일주소)"
git config --global user.name "Your Name(이름)"

- 확인

  • git config user.email
  • git config user.name

-이메일 또는 이름을 잘 못 입력한 경우

  • git config --global user.email "you@example.com(이메일주소)"
  • git config --global user.name "Your Name(이름)"

 

6. 로그 확인하기

- git log

 

7. README.md 만들기

- 깃허브에 업로드시 저장소 메인 설명글로 사용

- 마크다운으로 작성

제목
    #       제목    <h1>/</h1>
    ##      제목    <h2>/</h2>
    ~
    ######  제목    <h6>/</h6>

강조
    이탤릭체:   *이탤릭체* 또는 _이탤릭체_
    볼드체:     **볼드체**
    이탤릭체와 볼드체를 동시에:     **_이탤릭체와 볼드체를 동시_*
    취소선:     ~~취소선~~
    <ul>밑줄</ul>


목록
    순서가 필요할 때:   1. 순서가 필요한 목록
    순서가 필요하지 않을 때:    - 순서가 필요하지 않은 목록

링크
    [클릭할 문자열](URL)
    예) [구글로가기](https://google.com)

코드 작성
    ```
        프로그램 코드 작성
        ...
    ```

 

8. 여러 파일을 함께 선택

- stage에 현재 디렉토리에 있는 변화된 모든 파일을 선택

  • git add . -> 모든파일

 

9. 선택된 여러 파일을 커밋

- 로컬 시스템에서 파일을 수정/생성/삭제하고 원격 저장소에 반영할 파일들을 선별하는 것(버전 만드는 것)

- 파일이 변경될 때 변경 사항은 자동으로 저장되지 않음

- git에게 새 커밋을 생성하여 변경 사항을 저장하도록 지시

  • git commit -m "현재 디렉토리에 있는 모든 변경된 파일을 커밋"

 

✔ 깃 허브(Git Hub)

- git으로 버전 관리한 코드를 업로드 할 수 있는 클라우드 서비스

- 단순히 저장만 하는 것이 아니라 다른 유저들과 함께 코드를 공유하고 온라인으로 하나의 프로젝트를 개발할 수 있게 해줌

- https://github.com/

 

GitHub: Let’s build from here

GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...

github.com

 

10. 로컬 저장소에서 github 저장소 주소를 설정

git remote add origin https://github.com/ParkSongJi/test.git
                    -> 이거는 이름 아무거나 내가 설정해도됨

git remote add origin1 https://github.com/ParkSongJi/test1.git

<삭제하기>
git remote remove origin

<확인하기>
git remote -v

 

11. 생성한 커밋(버전들)을 github로 전송(push)

- 원격 저장소에 업로드하여 다른 사용자와 커밋을 공유

git push -u origin master
        ----
        업스트림
            - 원격 저장소와 로컬 브랜치가 추적하는 브랜치를 의미
            - 기본적으로 origin/master 브랜치를 추적함

생성한 커밋(버전들)들은 다른 사람 github로 전송(푸시)

 

12. Git Repository Clone

- Repository를 로컬 시스템에 복제하는 방법

- 지금까지 모든 Repository의 히스토리가 포함

git clone git주소   (폴더를 생성)
예) git clone https://github.com/ParkSongJi/test.git

git clone git주소 . (폴더를 생성하지 않음)
예) git clone https://github.com/ParkSongJi/test.git .

 

13. Git Repository Fork

- 하나의 Repository를 다른 계정(또는 네임스페이스)으로 복사
- Git 명령어가 아닌 github에서 제공
- 다른 사람의 github 계정 Repository에서 fork를 눌러 내 계정 Repository로 복사

 

14. 다른 사람과의 협업

- 원하는 Repository에서 Setting -> collabolators -> 비밀번호 입력 -> Add people 클릭 -> 이름 또는 이메일 추가 -> 초대받은 계정의 메일에서 수락

 

15. pull

- 원격저장소에서 fetch명령어로 가져온 후 merge까지 한번에 실행하는 명령

  • git pull origin 

 

16. fetch

- 원격저장소에서 소스를 가져오기
- marge를 사용하지 않음

  • git fetch origin

 

17. branch

- 작업에 대한 가지고
- 큰 줄기(master)에 영향을 주지 않고 가지에서만 작업을 별도로 할 수 있음
- 브랜치를 사용하여 저장소의 메인 분기에 영향을 미치지 않고 여러 기능이나 버그 수정을 동시에 수행할 수 있음

  • git checkout -b 브랜치명

 

18. Pull Requese

- 다른 작업자가 push를 했으니 해당 자료를 가져가도록 당기기를 요청
- PR은 저장소에 대한 변경 사항을 제안하고 다른 개발자와 협업하는 방법
- 코드 변경을 제안하고 검토하며 저장소의 브랜치를 병합하는 데 사용