코드스테이츠

[코드스테이츠 BE 45기] <Section1> Week1 (Git 기초)

codingbug 2023. 4. 14. 21:58

Git 기초

Git

소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템

날짜별로 어떤 파일이 어떻게 바뀌었는지 확인이 가능

버전관리 : 파일의 변경 사항을 추적하며, 사용자가 각 파일의 버전을 관리할 수 있게 도와줌

백업 : 파일을 백업할 수 있게 해줌

협업 : 협업자들과 함께 파일을 공유하고, 각자의 작업물을 취합할 수 있게 해줌

  • 스냅샷 : 특정 시점에 생성된 백업 복사본
  • commit : 스냅샷을 만들어 주는 작업
  • Github(원격 저장소의 기능, 개발자들의 SNS) : Git Repository를 관리할 수 있는 클라우드 기반 서비스-
  • Git Repository(Git으로 관리되는 폴더)
  • Local Repository 작업 Remote Repository 내가 작업한 코드를 업로드해 여러 사람이 함께 공유가능

Fork : React프로젝트에 contribute을 하기 위해서 React 원격 저장소를 내 원격 저장소로 가지고 오는 작업

Clone : Fork해서 Remote Repository에 옮겨온 코드를 수정하기 위해서는 내 컴퓨터로 가져오는 작업

Push : React 소스코드 변경 작업을 완료 후 변경된 내용을 commit을 통해 저장해 준 뒤 Remote Repository에 반대로 올려주는 작업

Pull : Remote Repository에서 변경 사항이 있을 때 Local Repository 로 가져오는 작업

  • add, commit, push : 온라인 원격 저장소에 업로드하는 과정
  • fork, clone : 협업자의 작업물을 나의 로컬에 다운로드 받는 과정
  • pull request : 상대 협업자에게 나의 작업 완성물을 취합해달라고 요청하는 과정
  • merge : 상대방의 작업물과 나의 작업물을 취합하는 과정

Git Workflow

상황에 따라 GitHub의 기능과 Git 명령어를 사용할 수 있다

  • Fork
  • clone
  • status
  • restore
  • add
  • commit
  • reset
  • log
  • pull
  • push
  • init
  • remote add
  • remote -v

• Git의 세 가지 영역 및 상태를 이해한다. (Committed, modified, staged)

Advanced Challenge

  • Git Repository의 commit 되지 않은 변경 사항을 취소할 수 있다.
    • reset HEAD <file>
    • checkout -- <file>
  • 협업을 위한 git 개념을 이해할 수 있다.
    • branch, merge의 개념
    • remote repository에서 origin과 upstream의 차이점
    Git의 영역과 기본 명령어
    • 온라인 : Remote repository(원격 저장소)
    • 로컬 : Work space(작업 공간), Staging area(스테이징 영역), Local repository(지역 저장소)
    1 실습 디렉토리 및 파일 생성
    mkdir git_practice
    cd git_practice
    pwd
    /c/Users/codingbug/git_practice
    touch hello_git.txt
    echo hello codestates > hello_git.txt
    cat hello_git.txt
    hello codestates git.txt
    
    2 Git으로 파일 관리를 시작하기(Git 초기화) : git init
    ~/git_practice git init
    Initialized empty Git repository in C:/Users/codingbug/git_practice/.git/
    ~/git_practice **(master)**
    
    .git 디렉토리
    • git init을 입력하면 디렉토리 내에 .git 디렉토리가 생성되지만, ls -l 명령어를 입력해도 .git 디렉토리를 확인할 수 없음
    • 디렉토리나 파일 이름의 맨 앞에 .이 붙으면 해당 디렉토리 또는 파일이 숨김 처리되어 일반적인 ls명령어로는 확인할 수 없지만, ls명령어의 옵션으로 -a를 붙여주면 숨김 처리된 디렉토리 및 파일을 확인할 수 있음
    ls -l
    total 1
    -rw-r--r-- 1 codingbug 197121  0  4월 14 10:39 git.txt
    -rw-r--r-- 1 codingbug 197121 25  4월 14 10:40 hello
    
    ls -al
    total 13
    drwxr-xr-x 1 codingbug 197121  0  4월 14 10:45 ./
    drwxr-xr-x 1 codingbug 197121  0  4월 14 10:37 ../
    drwxr-xr-x 1 codingbug 197121  0  4월 14 10:45 **.git/**
    -rw-r--r-- 1 codingbug 197121  0  4월 14 10:39 git.txt
    -rw-r--r-- 1 codingbug 197121 25  4월 14 10:40 hello
    
    Work space3 파일들의 상태를 확인하기 : git status
    git status
    On branch master
    
    No commits yet
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            git.txt
            hello
    
    nothing added to commit but untracked files present (use "git add" to track)
    
    • On branch main
      • 현재 브랜치는 master 브랜치임
    • No commits yet
      • 아직 커밋을 하지 않았다는 의미
    • Untracked files: ~
      • Untracked는 Git의 관리하에 있는 파일이 가질 수 있는 상태 중 하나
    • (use “git add <file>…” to include in what will be committed)
      • git add 파일_이름을 입력하면 커밋될 것들에 해당 파일을 포함시킬 수 있다는 의미
      • what will be committed : 커밋될 것들이 모여있는 무언가=Git의 영역 중 Staging area
    • nothing added to commit but untracked files present (use "git add" to track)
      • 아직 add된 파일들이 없으며 Untracked 상태의 파일이 존재하니, git add 명령어를 사용하라고 안내
      • use git add to track : track 하기 위해서는 git add명령어를 사용해야 함
    파일의 상태
    • Untracked
       파일의 내용을 변경하여도 Git이 파일의 내용 변경을 감지하지 못함.
      
    • : Git에 의해 파일의 상태가 추적되고 있지 않은 상태
    • Tracked
    • : 파일의 상태가 추적되고 있음. 수정되었을 때 Git이 파일의 변경 내용을 감지.
    • Unmodified : 파일의 수정이 Git에 의해 감지되지 않은 상태
    • Modified : 파일의 수정이 Git에 의해 감지된 상태
    • Staged : 파일이 Staging area에 존재하는 상태
    Staging areaGit을 활용하여 작업을 할 때는 Work space에서 작업을 마친 파일을 Staging area로 옮겨서 모아두고, 추후 어느 정도의 단위 작업이 끝나면 Staging area에 모인 파일들을 한 번에 Local repository로 저장‘파일을 스테이징한다’
    git status
    On branch master
    
    No commits yet
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
            new file:   git.txt
            new file:   hello
    
    • Changes to be committed: ~
      • 변화가 감지되었으며, 아래의 파일들을 Commit 할 수 있음을 의미
        • 즉, 현재 hello_git.txt는 Staging area에 존재하며, 따라서 Staged 상태임
    • (use "git rm --cached <file>..." to unstage)
      • 해당 명령어를 입력하면 새롭게 생성하여 스테이징한 파일을 다시 Work space로 되돌릴 수 있음
    • new file: git.txt
      • Git이 git.txt라는 새로운 파일을 감지하였음을 의미합니다.
      • 주의할 점은, 아직 git.txt는 Untracked 상태라는 점임. Git이 새로운 파일을 감지하였기 때문에 Tracked 상태인 것으로 오해할 수 있지만, Tracked 상태는 Commit이라는 과정을 거쳐야만 가질 수 있는 상태임
    5 파일을 Local repository에 저장하고 버전을 기록하기 : git commit
                 파일을 Local repository에 저장함과 동시에 파일의 버전을 기록
    
    git commit : 여러 줄의 커밋 메시지를 입력할 수 있는 텍스트 편집기 창이 뜸1 포크3 리모트git remote add origin<내ssh경로>git remote -vgit add <내가만든파일 hello_git.txt>git commit -m ‘feat hello_git.txt’6 푸시git push pair mastergit add <change flie>89
  • git pull pair master
  • git push origin master
  • git commit -m ‘change TOO’
  • 7
  • git push origin master
  • *feat는 Commit Message Convention임 (컨벤션 참조)
  • git commit -m ‘hello_git.txt추가’
  • 5 staging area로 파일 추가하고 commit 하기
  • 4 리모트 확인
  • git remote add pair<페어ssh경로>
  • 2 클론
  • -m : 여러 줄의 커밋 메시지보다는 짧게 요약하여 한 줄만 작성
  • Commit : Local repository에 파일을 저장하는 행위
  • git add 파일_이름
  • 4 Staging area로 파일을 이동시키기 : git add
  • Local repository에 파일들을 저장하기 전에 임시로 파일들을 모아둘 영역
  • Git으로 관리되고 있는 파일들의 상태는 git status명령어로 확인 가능
  • git init을 입력한 직후 다른 어떠한 Git 명령어도 입력하지 않은 상태의 파일들이 존재하는 영역 (눈으로 볼 수 있는 디렉토리 자체를 의미)
  • 해당 파일이 존재하는 위치에서 git init을 입력하면 git init을 입력한 위치의 모든 파일들이 Git의 관리를 받게됨
  • [Linux - 기초]에서 배운 내용을 활용하여, git_practice라는 이름의 디렉토리를 만들고, 해당 디렉토리 내에 아래의 내용이 들어간 hello_git이라는 이름의 텍스트 파일(.txt)을 생성하기
  • Git의 영역

하.. 노션에서 작성했더니 순서가 섞였다.. 수정해야겠네ㅠ..