D+18 / Git repository

김서연·2022년 7월 18일
0

프론트엔드

목록 보기
8/12

* Git repository

: Git(분산형 버전관리 시스템)에서 코드를 저장하는 공간. 리퍼지토리는 자신의 컴퓨터의 작업공간(local)에 위치한 로컬 Git 리포지토리와, Github 등의 원격(remote) 공간에 위치한 원격 리포지토리로 구분할 수 있다.

* 로컬 git repository

  • 로컬 환경에 있는 디렉토리에서 로컬 Git 리포지토리를 추가하면 해당 디렉토리의 파일 변화를 감지할 수 있다.
  • 파일의 변화를 기록하는 절차
    1. 코드를 저장할 디렉토리를 만들고 해당 디렉토리에 로컬 Git repository를 생성한다 (git init)
    2. 코드를 작성하고 저장하는공간, 작업공간(work space)의 파일 및 디렉토리를 git의 관리하에 있는 상태로 올려줄 수 있다.(git add) 이 영역이 staging area이다. ( untracked files를 staging area로 추가)
    • git add <경로명> : staging area에 코드를 옮기는 명령어
    • git add . : 현재 경로에서 변경이 감지된 모든 파일을 한 번에 추가한다. (.은 현재 경로를 의미한다.)
      ** staging area : Commit 하기 전에 내용을 기록하는 장소
    1. staging area로 잘 옴겨졌는지 확인한다. (git status) staging area에 잘 옴겨졌으면 초록색, 변경이 되었으나 staging area로 옮겨지지 않은 파일은 빨간색 글씨로 표시된다.( git 리포지토리 상태, 변경사항 파악 가능)
      = Git 리포지토리가 없는 디렉토리에서 git status 명령어를 입력하면 'not a git repository (or any of the parent direcorties)'메세지가 나온다.
    2. staging area의 파일은 commit이 가능하다. commit으로 local Git repository에 내 코드를 기록할 수 있다.
      = staging area의 코드 묶음을 저장하기로 결심하고 (git commit)
      = staging area 코드의 용도를 적어두는 행위 (커밋 메시지 -m "commit message")
      = git status로 확인 했을 때, staging area가 빈 상태가 되면 commit에 성공했다.
      = 커밋한 기록을 되돌려서 이전으로 돌아가는 방법
      git reset HEAD~1  ( HEAD : 현재 시점  / ~, ^ 는 이전으로 돌리는거, 2개전이면 2 입력하면 된다. )
       git reset HEAD^1
       git reset HEAD^
  • commit 사용법
    commit은 가장 작은 단위로 자주 하는게 좋다. Git commit 기록이 상세하게 되어있으면 아래와 같은 장점이 있다.
    1. 코드를 잘못 적은 경우에, 이전 기록을 더 쉽게 복원할 수있따.
    2. 누가 해당 코드를 수정했는지 쉽게 파악할 수 있다. (이후 학습할 merge, rebase 등 기능 사용시 도움됨)
      = commit 메시지는 동료 개발자가 참고할 수 있기 떄문에, 짧고 간결하게 사실적으로 작성해야 한다.

* 원격(remote) git repository

  • 자신의 컴퓨터(로컬환경) 작업 공간에 위치 하지 않는 Git 리포지토리이다. 공개된 git 리포지토리의 경우, 여러 사람이 함께 공유 가능하다.

  • 새로운 애플리캐이션을 제작하기 위해서 원격 git 리포지토리를 만들고 다루는 과정

    1. Github에서 원격 리포지토리를 생성한다.
      • 이름은 가능하면 로컬 리포지토리 디렉토리 이름과 같게 설정하면 좋다.
      • 만약 오픈 소스 코드가 아니고, 공개하지 않는다면 Private를 체크하고 생성한다.
      • Owner가 자신의 아이디인지 재확인한다.
    2. 로컬 리포지토리에 원격 리포지토리 git url을 등록한다. (git remote add 'name' 'URL')
      • git remote 명령어는 원격 리포지토리를 다루기 위한 git 명령어이다.
      • 'name' : 앞으로 로컬 리포지토리에서 원격 리포지토리 주소를 대신할 이름 (ex: origin)
        'URL' : 원격 리포지토리 주소 (ex: git@github.com:codestates-seb/agora-states-fe.git )
        ex) git remote add origin https://github.com/seoyeon0108/my-first-github-repository.git
    3. remote 리포지토리가 잘 연결됬나 확인 ( git remote -v)
       origin	https://github.com/seoyeon0108/my-first-github-repository.git (fetch)
        origin	https://github.com/seoyeon0108/my-first-github-repository.git (push)
      잘 연결됬으면 이렇게 나온다.
    4. 로컬 리포지토리에 기록한 내역을 원격 Git repository에 옮긴다. ( git push 'remote' 'branch')
      = 다른 CLI 명령어처럼, git push 도 매개변수를 가질 수 있습니다. 'remote' 에는 원격 리포지토리의 이름을 입력하고, 'branch' 에는 브랜치 이름을 입력한다.

    ** 내 커밋 로그(내역, 기록)를 확인하는 명령어 (git log) - 나가려면 : + w + q


* Fork

: 기존의 잘 만들어진 프로젝트에 변화를 주거나 새로운 것을 시도 해보기 위해 리포지토리를 복사하는 것을 의미한다. 기존의 프로젝트에 영향을 미치지 않기 때문에 서로의 프로젝트에 영향을 주지 않는다. ( 라이센스까지 함께 복사가 된다. )

  • fork 후 할 수 있는 일
    = 자신의 컴퓨터의 로컬 리포지토리로 git clone <repo주소>하여 따로 개발 (그냥 다운로드하면 .git 폴더가 다운받아지는게 아니라서 commit내역, branch도 없다.)
    = public 프로젝트에 버그 수정 및 기능 추가 요청 (push & pull request)
    = public 프로젝트에서 새로 업데이트 된 내용을 가져오려면 pull ( git pull 'name' 'branch') - 동료의 리포지토리도 가능
    • 만약 내 로컬로 다른 동료가 다른부분을 작업한 내용을 pull해올때, 자동으로 merge되어서( merge에 커밋 자동 포함) 내거 내용에 동료가 다른부분 수정한게 합쳐진다.
      다만 같은 부분을 수정했는데 합칠떄 내용이 다르다면, 어느부분을 남길지 선택하는게 뜨고 수정하면 다시 git add 해야 한다.그리고 commit할떄 메세지는 정해져있어서 그냥 git commit만 하면된다 ( 왜냐 merge 시에는 메세지가 정해져 있다.)
profile
프론트엔드 엔지니어로 성장

0개의 댓글