Git & Github 정의 와 사용법, 그리고 git pull의 중요성

우주·2022년 6월 12일
1

Git

목록 보기
1/2
post-thumbnail

💡 Git

  • sw 개발 과정에서 생기는 변경사항을 추적하는 분산 버전관리시스템
  • 작업한 코드를 CLI 방식으로 저장이 가능

💡 Github

  • Git 데이터를 온라인에 기록해두는 사이트
  • 사용자 친화적인 GUI를 제공함
  • 자신의 코드를 간편하게 확인이 가능하고, 협업에 편리함


🧑🏻‍💻글쓴이의 깃허브 사이트

my github link

위와 같이 자신이 어느 날 commit을 했는지 기록이 남으며, 몇 번의 커밋을 했는지 한 눈에 볼 수 있다.

Git은 왜 사용하는가❓

git을 사용하는 이유는 종전에 기록한 코드와, 그리고 현재 내가 작성한 코드가 있을 때, 현재의 코드를 테스트를 해보고, 또 현재 작성한 코드가 오류가 발생한다면, 이전의 코드로 되돌릴 수 있고, branch의 개념을 사용해 테스팅을 지속적으로 함으로써, 완전한 코드들만 레포지토리에 작성할 수 있다는 것이다. 이러한 이유로 여러 사람들과 협업이 필요할 때, 굉장히 편리하다는 장점이 있다.


[출처 : 강의 교안이미지..]

위와 같이 기능을 추가함에 따라서, 파일이 추가가 되는데, 이 부분에서 복잡성을 줄이고, git을 통해 cloud상에서 코드를 관리할 수 있어서 편하다는 게 장점이다.

🔗 Github flow

working directory ?

working directory 는 vscode와 같이 개발자가 현재 작업하는 공간을 말한다.


staging area ?

staging area는 working directory에서 작업한 내용 혹은 수정사항을 1차적으로 기록해두는 공간이다.

local repository ?

local repository는 git commit -m "커밋메세지" 명령어를 통해서 1차 변경 사항들이 최종적으로 저장된다. 그리고 git push를 통해서 remote repository로 이동된다.

remote repository ?

다른 사람들과 공유가능한 레포지토리

☑️ 내 코드를 Github에 올리기

  1. github 회원가입 후 레포지토리 생성

여기서 초록색 New를 누르고 Public(공개) 혹은 (Private)로 레포지토리를 생성한다.

  1. git clone [만든 깃허브 레포지토리 주소]
    git clone을 통해서 바탕화면이나 특정 폴더에 만든 레포지토리를 가져온다. 처음에 가져온 레포지토리는 비어있는 폴더라고 생각하면 됨

  2. 레포지토리 폴더에 코드 작성 후 git add .
    working directory에 있는 변경 사항을 staging area에 옮기기 위해서 git add .를 한다. git add .는 모든 변경사항을 옮기는 것이고, .이 아니라 git add [파일명]을 입력하면 그 파일만 옮겨진다.

  3. git commit -m "커밋 메세지"
    staging area에 옮겨진 저장사항들을 로컬 레포지토리로 옮긴다.

  4. git push or git push origin main
    변경 사항들을 모두 remote 레포지토리로 보내버린다.

  5. git pull
    pull은 혼자 작업할 때는 자주 사용되지는 않는거 같은데, 여러명이 협업을 진행할 때는 작업전에 pull하는 것이 필수이다.

  • 어제 새벽에 내가 작업을 하고 나가서 Upstream repo에 코드를 올려놨다. ver.1
  • 근데 일찍 출근한 김씨가 내 코드에 덧붙혀서 작업하고 push를 해놨다. ver1 > ver.2
  • 내가 점심에 가서 내가 새벽에 작업한 ver1로 이어서 작업하고 push를 했다. ver1 이어작업
  • 오류 발생

내가 새벽에 해서 내가 push 했는데 왜 오류남 ?

  • 내가 새벽에 작업한 가나다라라는 코드를 아침에 김씨가가나다라랄라로 올려놨음
  • 나는 점심에 와서 가나다라에서 가나다라면먹고싶다로 해서 올릴려니 가나다라랄라와 맞지 않아서 conflict 가 발생한 것이다.

결론적으로 협업시에는 무조건 작업 전에 git pull 하자

profile
개발합니다. 회고합니다.

0개의 댓글