Git

밀크티·2022년 2월 27일
0
post-thumbnail

git이란 무엇인가?

작업물을 원하는 순간으로 돌아가게 만드는 도구.
분산 버전 관리 시스템 DVCS; distributed version control systems
명령어를 기반으로한 명령어 프로그램 (따라서 git은 터미널을 이용해서 명령어로 배우는 것이 가장 유리.)

github란 무엇인가?

협업툴

git workflow

  1. WORKING DIRECTORY(working tree); 작업중인 파일
    -untracked/ tracked 두 가지로 나누어짐.
    -untracked: 새로 만들어졌거나 혹은 기존에 존재하던 파일에서 깃을 초기화해서 파일 정보가 없어진 파일
    -tracked: 깃이 이미 알고 트랙킹을 하는 파일
    -tracked는 modified(수정 된)와 unmodified(수정되지 않은)로 나뉨.
    -수정이 된 modified 파일만이 staging area로 옮겨 갈 수 있음.

  2. STAGING AREA(index);버전 히스토리에 옮길 파일들을 놓는 곳
    명령어 commitm으로 2번에서 3번으로 옮겨 저정 할 수 있음.

  3. .GIT DIRECTORY(repository); 버전 히스토리
    check outl이라는 명령어를 이용해 1번이나 2번으로 돌아갈 수 있음.

-이렇게 저장된 깃 히스토리는 컴퓨터에 저장됨.
-드라이브로는 깃허브와 같은 서버를 사용함.
-push 라는 명령어를 이용해 나의 디렉토리를 서버에 업로드
-서버에서 로컬(내 컴퓨터)로 다시 다운 받을 경우헤는 pull이라는 명령어를 사용

commit; 개발 단계별로 깃발을 꽂는 행위, 커밋에는 항상 메모가 따라 다니는데 그 메모에는 무슨 개발을 했는지 적을 수 있고 그것을 커밋 로그 라고 부름.
-커밋에는 message, author, date/tieme등의 정보가 포함 되어 있음.
-각각의 커밋에는 스냅샷(특정 시간에 저장 장치의 상태를 나타냄)된 정보들을 기반으로 고유 해시코드가 부여됨. 이를 통해 버전 정보를 참조할 수 있음.
-깃 디렉토리에 있는 커밋들은 히스토리의 창고임. 작업들을 버전별로 나누어 관리 할 수 있음.
-히스토리에는 세부화된 작은 단위의 내용을 담는 것이 중요함. ex) initilise project, add login sevice, add user repository, add welcome pafe, add about page, add light theme. 이러한 의미 있는 이름을 지정하여 히스토리를 바라봤을 때, 작업한 내용을 바로 확인하고 변경사항을 바로 찾을 수 있는 직관적인 네이밍이 필요.
-보통 커밋의 내용은 영어 현재형 동사로 이루어짐. ex) init, add, fix
-커밋 메세지에 맞는 내용만을 커밋해야함
-의미 있는 단위에 대한 감은 실무경험으로 쌓을 수 있음.

Tip! iterm에서는 '방향키 위 버튼'을 누르면 이전에 작성한 코드를 활용할 수 있음.
command+k 를 누르면 터미널에서 썻던 모든 것이 사라지면서 화면이 깨끗해짐.

소스트리

-깃은 분산 버전 관리 시스템이라 속도가 굉장히 빠름
-깃의 기본 기능: 이력관리
-깃 키워드 정리
repository/repo: 저장소/ git으로 버전 관리하는 디렉토리를 뜻함
local repository: 원격 저장소 / github등 외부 서버에 설정된 git 저장소
commit: 커밋 / 특정 상태를 기록한 것, 즉 버전을 뜻함
branch: 브랜치 / 갈래 즉 또 다른 작업 공간을 뜻함
merge: 머지 / 병합, 합치기 즉 특정 브런치에서 작업한 내용을 다른 브랜치에 적용하는 것을 뜻함

-git은 브랜치 기능을 제공해 동시에 여러 작업 진행이 가능
-새기능 혹은 버그를 수정할때 브랜치를 만들고 코드 리뷰 후 메인 브랜치에 merge하는 방식 사용
-data assurance; git은 데이터 무결성을 보장

CLI(Command Line Interface); 명령줄 인터페이스는 텍스트 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻함, 즉 터미널 창이 이에 포함됨.

-CUL은 입력/출력으로 구성됨
-입출력이 가능하세 해주는 소프트웨어나 하드웨어를 터미널(terminal)이라하고 사용자가 입력한 명령어를 해석해주는 소프트 웨어를 셸(shell)이라 함.
-윈도우에선 ‘>’ 형태로, 맥에서는 ‘$’ 표시로 사용자의 명령을 기다리는 command prompt(명령 프롬프트)가 존재
-사용자가 특정 명령어를 통해 입력을 하고 엔터키를 이용해 명령을 종료하면, 셸 프로그램이 입력받은 명령어를 해석하고 적절한 내용을 터미널에 출력해준다.
-ls: 현재 디렉토리를 확인하는 명령어
-cd라는 명령어 뒤에 여러 옵션을 주면서 다양하게 디렉토리를 이용할수 있다. 현재 디렉토리를 확인하고 하위 디렉토리로 이동
-폴더(디렉토리)를 생성하는 명령어는 ‘mkdir’
-해당 디렉토리에서 git을 초기화 시켜줘야 git을 사용할 수 있는 디렉토리가 됩니다. 처음에 한번만 진행하면 되고 ‘git init’

GUI(Graphic User Interface); 거의 모든 운영체제에서 지원하는 형식, 그래프 유저 인터페이스

명령어 리스트

-mkdir: make directory, 디렉토리 생성
-cd: change directory 디렉토리로 이동
-touch: 빈 파일 생성
-echo “[글자]” >> [파일]”: 파일에 글자 추가
-status: 상태 확인

git log: 이력 확인
git reset: 이력 제거
git revert: 이력 유지

-vs code로 commit 만들기: changes 옆의 +버튼을 누르고 커밋 메세지를 작성 후 ✅를 누르기, commits 탭에서 확인
-sourcetre로 commit 만들기: 파일들을 모두 staging area로 옮기고 맨 아래 코맨트 칸에 커밋 메세지를 작성후 commit 버튼을 클릭하기, history 탭에서 확인가능

main branch
master보다는 main이 더 대중적으로 사용되고 있음
마스터에서 메인으로 변경할 수 있는 명령어: git branch -M main

github

-git pull을 자주 실행해야함: 원격 저장소와 로컬 저장소의 차이가 커지면 충돌이 자주 발생하기 때문
-푸시한 커밋은 이력 꼬임으로 인해 수정이 불가능함. 푸시 하기전에 커밋을 작은 단위로 합치거나 메세지를 보기 쉽게 수정해 정리한 후 푸시하는 것이 좋음.

github flow

-로컬 브랜치로 작업을 하다가 의미가 있다고 판단되면 그때 원격 저장소로 push

0개의 댓글