Github 스터디 1주차(2)_버전관리

박신영·2023년 3월 18일
0

Github Study_2023

목록 보기
2/8

🔶Git 설치하기

  • git 홈페이지에서 설치
  • git bash(콘솔)프로그램 실행
  • 콘솔(터미널)에 'git'을 입력하여 git에 대한 설명이 나오면 설치가 잘 된 것임
  • pwd 를 사용하여 현재 위치의 경로를 살펴볼 수 있음

🔶버전 관리 START

  • 'ls -al'을 사용하면 현재의 상태 파악
  • mkdir 디렉토리명 : 현재 디렉토리 안에 하위 디렉토리 생성
  • cd 디렉토리명 : 디렉토리 안으로 들어감(cd shinyoung/hello-git-cli로 한번에 들어갈 수 있음)
  • rm : 현재 디렉토리에서 하위 디렉토리 삭제
  • cd .. : 현재 디렉토리에서 빠져나와서 그 전 디렉토리로 back
  • git init . : 현재 디렉토리를 깃에게 버전 관리를 시킴
  • exit : 터미널 종료
  • .git/ : 깃의 버전 저장소인 디렉토리가 생성되었음을 의미

    → 원래 만들어둔 shinyoung 디렉토리에 들어가서 hello-git-cli 디렉토리 생성후 안에 들어감

    → ls -al을 해보면 새로생긴 hello-git-cli 안에는 아무것도 없음을 알 수 있음
    → ⭐git init .을 통해 버전관리를 시키면 그 안에 .git이라는 디렉토리가 생김!(ls -al을 통해 알 수 있다)
    → 후에 .git 안에 들어가서 ls -al로 보면 안에 중요한 여러 파일들이 있음(매우중요하므로 지우면 안됨..)

🔶버전 만들기

  • 파일 변경사항 버전으로 만들어서 관리
  • Repositoy : 버전이 저장되는 곳 (.git으로 봐도 무관)
  • Working tree : 버전으로 만들어지기 전단계, 수정 및 저장 가능 _작업 디렉터리
  • Staging Area : Working tree의 파일을 버전으로 만들고 싶은 경우 사용
  • nano 파일명 : 파일 생성, 가져오기
    -파일 안에 내용 작성하고 Ctrl+x 누르고 저장할지 선택
  • touch 파일명 : 파일 생성 및 수정 시간 변경(내용을 작성 or 수정 X)
    💥nano 명령어는 파일의 내용을 편집하기 위해 사용하고, touch 명령어는 파일의 존재 여부와 수정 시간을 변경하기 위해 사용한다
  • 빔(Vim)을 사용하여 문서 편집 가능
    • 빔 : 터미널 화면에서 텍스트 문서를 바로 만들 수 있는 텍스트 편집기
    • vim 파일명.txt를 통해 파일 생성
    • 빔의 모드
      • 입력모드 : 문서 작성과 종료, ESC 키로 ex모드로 바뀜
      • ex 모드 : 텍스트 입력과 수정, ':wq' + Enter 키로 작성한 파일 저장하고 편집기 종료해서 터미널 창으로 돌아감
  • cat 파일명 : 파일 내용을 화면에 출력

문서 정보 파악

  • git status
    -No commits yet : 아직 버전이 없음을 의미
    -Untracked : 버전관리가 되지 않고 있는 상태의 파일임을 의미/ 버전 관리를 시키지 않으면 관리가 안됨
    -Changes to be committed : 버전이 될 파일들의 목록을 의미
    -nothing to commit/ working tree clean : 관리할 파일이 없음을 의미
    -Changes not staged for commit : 버전 관리가 된 파일을 의미

    → hello1.txt 파일이 untracked 되어있음(버전관리가 되어있지 않음을 의미)
    → git add를 통해 hello1.txt파일을 staging area에 올리고 status를 살펴보면 버전은 없지만 버전관리 될 파일이 staging area에 있음을 알 수 있음

파일 Staging Area에 올리기

  • git add 파일명 : 파일을 Staging Area에 올림 (꼭 파일명 하나를 지정할 필요 xx)
    • [cf] git add . : 현재 디렉토리 밑에 있는 모든 파일을 add함을 의미
    • [cf] git add 디렉토리명 : 디렉토리 밑의 모든 파일을 staging area에 올림
    • git commmit -am "버전명" : add + commit 한번에
      -그러나 untracked 상태의 파일은 add가 되지 않음!! 최초 한번은 add가 돼야함
  • git commit -m "버전명" : 버전이 생성되고 Staging Area에 있던 파일이 Repository로 이동
    • git config --global user.email "이메일주소", git config --global user.name "이름" :만든 사람의 정보 작성
    • -m없애면 기본 에디터가 됨! (잘 모르는 에디터라면 검색해서 에디터 바꾸기_보통 나노 에디터가 사용중인 것)
      • git commit : 여러줄의 commit 메세지 작성 가능 but 에디터가 뭐가 나올지는 모름
    • git config --global core.editor "nano" ; 에디터의 이름 사용하면 됨, 깃의 설정을 바꾸는 것임
  • git log : 버전이 잘 생성되었는지 확인(일종의 역사 확인): show version

    → Message 1이라는 버전 생성하면서 staging area에 있던 파일 repository로 이동시김(user name과 email 작성)
    → status를 확인해보면 working tree에도 staging area에도 파일이 없음
    → git log를 하면 나오는 commit 뒤의 값이 버전의 고유 아이디!
    → 만든 사람의 이름, 만든 시간 등을 전부 알 수 있음
    → q를 입력하여 빠져나올 수 있음

파일 수정하기

  • nano 파일명 : 파일을 가져오는 역할도 함! 수정할때 사용

    → Changes not staged for commit: staging area에 있지 않은 수정사항이 working tree에 있음을 의미
    → modified로 파일이 수정되어있음을 의미
    → git add를 통해 수정된 파일을 staging area에 올리기
    → git log로 버전들의 정보를 파악

🔶여러 파일을 버전으로 만들기

  • 버전 관리 중이든 아니든 Staging Area에 올릴 때는 항상 'git add 파일명'을 사용

    → 기존 파일 수정, 새로운 파일 생성을 하고 status를 확인해보면 새 파일은 untracked된 파일로 나온다,, 깃이 관리해본적이 없는 파일이기 때문!

  • git log를 사용하면 각 파일이 어떤 버전에 포함되어있는지 알 수 xx

  • git log --stat : 각 버전에 어떤 파일이, 몇개 파일이, 각 몇줄이 수정되었는지 전부 확인가능
    [cf] 모든 명령어를 외울수는 없기 때문에 구글에 검색해서 알아내면 됨

🔶버전간의 차이점 비교

  • git diff : 초록색은 추가된 내용을 알려줌 / 빨간색은 삭제된 내용을 알려줌
    차이점을 바로 알 수 있다
    버전 만들기 전에 검토하고 수정 가능

  • git reset --hard : 최근 작업한 내용이 전부 삭제됨

  • git log -p : 각 버전마다 전 내용과 변경된 내용이 나옴
    코드상에서 문제가 생겼을때 추적하기 편리
    참고영상 클릭! ; 4분 10초 확인

🔶Checkout & 시간탐색 및 변경

  • 최신 버전 : main

  • HEAD -> main : 헤더가 마지막 버전을 가리키고 있음을 의미

  • git checkout 버전아이디 : 버전을 만든 시점으로 돌아가게 됨

    • git log를 통해 돌아가고 싶은 버전 아이디 복사(git에서는 복사-Ctrl + Insert, 붙여넣기-Shift + Insert)
  • git log를 사용하면 최신버전이 보이지 않지만 삭제된 것은 아님!

  • git checkout main : 다시 최신이었던 상태로 돌아갈 수 있음
    -모든 파일이 최신 상태로 복구되었음을 확인할 수 있음

🔶삭제(git reset)

  • git reset --hard 버전아이디 : 그 버전으로 리셋하겠다!
  • git reset --help : 메뉴얼 확인
    • --hard : 버전을 지우면서 수정하고 있었던 것들도 지우는 것(강력)
    • 버전만 지우고 수정하고 있던 건 살리고 싶다 : --soft 나 --mixed 사용

🔶되돌리기(git revert)

  • reset은 특정 버전을 지우는 것과 다름없음

  • revert는 삭제와 보존을 동시에 가능하게 함

  • 나노 에디터에서 사용

  • ⭐ git revert vs git reset

    • revert 뒤에는 지우고 싶은 버전아이디
    • reset 뒤에는 돌아가고 싶은 버전 아이디
  • git revert 버전 아이디 : 지우고 싶은 버전을 적으면 됨/ 나노 에디터가 나오면 왜 지우는지 이유를 적을 수 있음..!

  • git log를 하면, 버전을 지운 것까지 새 버전으로 남게 되어, 이전 버전도 남아있고 지운 버전도 남게 되는 것임

⭐ revert 하고싶은 것이 최신 버전이 아니면 충돌이 일어나기 때문에 역순으로 차례대로 revert해줘야함

profile
기술블로그

0개의 댓글