ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Git] Git 기본 이론♟️(자주 쓰는 CLI 명령어, Git, 버전 관리(VCS))
    Git♟️ 2023. 11. 15. 22:43
    반응형
    안녕하세요 여러분!!
    이전 글에서 버전 관리에 대해 이야기를 하며 글을 마무리 하였는데요! 오늘은 간단한 복습과 함께 Git에 대한 기본적인 내용을 학습해보려고 합니다 ٩( *˙0˙*)۶. 그럼 바로 Let's go.

    <이전 게시글> https://jungheeho.tistory.com/3
     

    [TIL] 프로젝트 관리가 왜 중요할까?☑️ (프로젝트, 협업, 리드미, 마크다운, 버전관리) _DAY1

    안녕하세요 여러분!!!! 이번에 프로그래머스에서 진행하는 "웹 풀스택 데브코스"에 참여하게 되면서, 매일매일 학습을 기록해보고 싶어서 저도 TIL을 시작해보려고 합니당. 벨로그에서만 글을 쓰

    jungheeho.tistory.com

     

    👩🏻‍💻버전 관리 시스템(Version Control System)의 종류

    앞서 버전은 유의미한 변화가 결과물로 나오는 것이라고 하였고, 버전 관리는 백업 용도로 많이 사용한다고 말씀드렸습니다!

    그럼 버전 관리 시스템에는 어떤 종류가 있을까요?!

     

    로컬 VCS
    중앙 집중식 VCS
    분산 VCS

     

    1. 로컬 버전 관리 시스템(Local VCS, Local Version Control System)

    - 서버 없이 로컬 컴퓨터 내에서 버전을 관리하며 간단한 데이터베이스를 이용해 파일의 변경 정보를 관리합니다.

    - 다른 컴퓨터와 연결 없이 내 컴퓨터 안에서만 일어나고, 단순히 버전 관리를 깔끔하게 하는 목적입니다!

     

    단점 : 협업이 불가능합니다.

    Local VCS

    그러나 프로젝트 진행시 다른 개발자와 함께 작업해야 하는 경우가 많고, 이럴 때 생기는 문제를 해결하기 위해 CVCS(중앙집중식 VCS)가 개발됐습니다! 

     

    2. 중앙집중식 버전 관리 시스템(CVCS, Centralized Version Control System)

    - 파일을 관리하는 서버가 별도로 있고, 파일 및 변경 이력 등을 서버로 옮겨 중앙의 서버가 이들을 관리합니다.
    - 각 클라이언트는 서버에 접속해서 특정 버전의 파일을 받아서 사용합니다. 
    - 종류는 SVN(SubVersion), CVS(Concurrent Versions System) 등이 있습니다.
     
    단점 : 모든 동작이 서버에서 일어나므로 서버의 부하가 크고, 데이터가 망가지면 복구가 매우 어렵습니다.
    또한 오프라인 상태에서는 이용할 수 없겠죠?

     

    CVCS

    그러나 이 단점들을 해결하기 위해 등장한 것이 바로 분산식 버전 관리 시스템(DVCS)입니다!

     

    3. 분산식 버전 관리 시스템(DVCS, Distributed Version Control System)

    - 각 클라이언트들이 모두 서버의 백업본을 가지므로, 모든 버전을 로컬에서 관리할 수 있어 같은 파일을 수정할때도 버전관리가 편하고 빠르고 안정적입니다.

    - 각 개발자가 중앙 서버에 접속하지 않은 오프라인 상태에서도 코드 작업을 할 수 있고, 대형 프로젝트에 적합합니다.

    - Git, Mercurial, Bazzar가 있습니다.

     

    단점 : CVCS에 비해 복잡하고, 동기화 문제가 있습니다.

     

    DVCS

    (통신 아키텍처로 보았을 때, client/server 방식과 달리 버전 제어에 p2p 접근 방식을 사용합니다)

     

    🖥️ Git

    - 깃(Git)은 DVCS이며 프로젝트의 로컬 복제본이 완전한 제어 레포지토리입니다. 또, 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 *스냅샷 스트림 기반 시스템입니다.

    - *데이터 무결성, 분산, 비선형 워크플로를 지원

    (+ 깃은 2005년에 리눅스 커널 개발을 위해 초기 개발에 기여한 다른 커널 개발자들과 함께 2005년에 리누스 토르발스가 처음 개발한 것이라고 합니다)

    - 깃허브(GitHub)는 을 지원하는 웹 호스팅 서비스 시스템의 한 종류입니다.

     

    쉽게 말하면

    깃은 "내 컴퓨터 안에서 버전을 관리해주는 시스템",

    깃허브는 " 깃이 저장소(repository)로 사용하는 클라우드"

     

    <Git 설치 방법>
    Git 홈페이지에서 각 OS에 맞게 설치. 아래 방법으로 버전 확인
    - Mac : terminal.app 실행 > git --version- Windows : [윈도우] > git bash 실행 > git --version

     

    CLI vs GUI

    - CLI(Command Line Interface) : 글자를 입력하여 컴퓨터에 명령을 내리는 방식입니다.

       ex) terminal, MS DOS, 명령 프롬프트(cmd), Unix 셸 환경

    - GUI(Graphical User Interface) : 사용자가 아이콘과 같은 그래픽을 통해 컴퓨터와 정보를 교환하는 환경

     

    자주 사용하는 CLI 명령어

    - ls(list segments) : 현재 경로에 존재하는 파일/폴더 리스트 출력
    [ls 명령어 옵션]
       ls -a : 숨겨진 파일/디렉토리를 포함한 모든 리스트를 출력
       ls -l : 리스트의 자세한 내용을 포함하여 출력 (권한, 하위 파일 수, 크기, 수정일 등)
       ls -R : 하위 디렉토리의 리스트까지 출력
       ls -r : 리스트를 내림차순으로 정렬하여 출력
       ls -h : 파일 크기를 편리하게 나타내어 출력
       ls -S : 리스트를 파일 크기 순으로 정렬하여 출력
    - mkdir(make directories) : 새로운 디렉토리 생성
    - cd(change directory)현재 작업 중인 디렉토리의 위치 변경
    [cd 명령어 옵션]

       cd . : 현재 경로

       cd .. : 상위 경로

    - git status : git 저장소의 현재 상태를 확인

    - git init(initialize) : 현재 디렉토리에 새로운 Git repository 생성 (현재 작업 디렉터리에 새 .git 하위 디렉터리가 만들어지고, 새 main 브랜치도 만들어지며 프로젝트 폴더를 git 저장소로 관리)

    - pwd : 현재 위치 확인

    다음 시간에 만나보아요 ◕✿

     


    🍀 느낀점 및 정리

    여러 프로젝트를 하면서 무작정 Git을 썼고 친숙했는데, Git이 분산식 버전 관리 시스템(DVCS)라는 것과 같은 개념적인 부분을 추가적으로 학습할 수 있어서 좋았습니다. 또, 자주 쓰이는 CLI 명령어를 익혀보면서 추후 있을 프로젝트에서의 협업을 위해 간단한 연습을 할 수 있어서 좋았습니다. 🚀👩🏻‍💻

    🔗 용어 정리

    *스냅샷(snapshot) : 컴퓨터 파일 시스템에서 스냅샷은 과거의 한 때 존재하고 유지시킨 컴퓨터 파일과 디렉터리의 모임이다

    *데이터 무결성 : 데이터가 전송, 저장되고 처리되는 모든 과정에서 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지함을 보장

     

    반응형
Designed by Tistory.