git

이지훈·2021년 6월 16일
0

git

목록 보기
1/3
post-thumbnail

git과 github 차이

1. git 이란

깃이란 분산형 버전 관리 시스템 중 한 개이며 엄청난 속도를 자랑한다. 따라서 대형 프로젝트에 사용하기 좋은 편이다.

장점

  • 빠른 속도(로컬 컴퓨터가 분산처리 서버가 되므로 중앙 서버가 할 일 감소)
  • 단순한 구조
  • 수천 개를 동시 다발적으로 브랜치 가능(비선형적 개발)
  • 완벽한 분산
  • linux 커널같은 대형 프로젝트를 하는 도중에도 데이터 전송 속도나 크기 면에서 유용
  • 오프라인 작업이 가능(로컬에서 저장하므로)
  • 가지치기(branch)가 쉬움
  • 무료

단점

  • 직관적이지 않다.
  • 오래되었다.
  • 하나의 저장소가 하나의 프로젝트 전체를 의미하므로 일부만 브랜칭을 하기 어렵다.
  • 커밋 id가 16진수 숫자라 기억을 해야한다.
  • push를 한 내용이라 하더라도 merge전에 삭제하면 나중에 접근하기 어렵다.

2. git hub란

분산 버전 컨트롤 소프트웨어인 git을 기반으로 소스 코드를 호스팅하고 협업 지원 기능들을 지원하는 마이크로소프트의 웹서비스이다.

git은 로컬서버에서 데이터를 저장한다. 각 개발자들이 로컬에서 저장한 데이터를 합쳐 프로젝트를 만들어야한다.

이 때 각 개발자들의 데이터를 받아 코드를 저장, 관리하는 서버이다.

3. 기본 용어

  • Repository: 저장소를 의미하며,저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인 할 수 있다.

  • Working Tree : 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점.

  • Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치.

  • Commit : 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업.

  • Head : 현재 작업중인 Branch를 가리킨다.

  • Branch : 가지 또는 분기점을 의미하며, 작업을 할때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을때 Merge를 하여 작업을 한다.

  • Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.

  • main : 이전에는 master 브랜치로 병합이 되었지만, 마스터라는 단어가 흑인을 비하하는 단어라고 해서 main으로 통합되었다.

4. 명령어

  • git --version : 설치되어있는지 아닌지 보고, 버전을 확인하는 명령어이다. 혹시 버전이 낮을 때, mac os 라면 brew를 이용해서 brew install git으로 설치후 터미널을 껐다 키면 버전을 갱신할 수 있다.

  • git init : 깃 저장소를 초기화한다. 저장소나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더이다. 이것을 입력한 후에야 추가적인 깃 명령어들을 줄 수 있다.

  • git help : 명령어를 잊어버렸다면 커맨드 라인에 "git help"를 쳐보자. 그럼 21개의 가장 많이 사용하는 깃 명령어들이 나타난다. 좀 더 자세하게 “git help init”이나 다른 용어를 타이핑하여 특정 깃 명령어를 사용하고 설정하는 법을 이해할 수도 있다.

  • git status : 저장소 상태를 체크한다. 어떤 파일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등을 볼 수 있다.

  • git clone : 원격 저장소의 저장소를 내 local에서 이용할 수 있게 그대로 복사해 가져온다.

  • git add : 이 명령이 저장소에 새 파일들을 추가하진 않는다. 대신, 깃이 파일들을 지켜보게 한다. 파일을 추가하면, 깃의 저장소 “스냅샷”에 포함된다.

  • git commit : 깃의 의미있는 수정 작업이 끝났을 때 마침을 알리는 작업이다. 보통 “git commit -m “Message hear.” 형식으로 사용한다. -m은 명령어의 다음 부분을 메세지로 남긴다는 뜻이다.

  • git push : 로컬 컴퓨터에서 작업하고 커밋을 깃허브에서 온라인으로도 볼 수 있기를 원한다면, 이 명령어로 깃허브에 변경사항을 "push"한다.

  • git pull : 로컬 컴퓨터에서 작업할 때, 저장소의 변경된 내용을 로컬(내 컴퓨터) 저장소에 적용하는 작업이다.

  • git log : 커밋 내역을 확인해보고 싶을 때 사용하는 명령어이다.

  • git branch :여러 협업자와 작업하고 자신만의 변경을 원한다면 이 명령어로 새로운 브랜치를 만들고, 독립적인 공간을 만든다. 새 브랜치를 “hello”로 지정하고 싶다면 "git branch hello"라고 쓸 수 있다.

  • git checkout : 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있다. 만약 master 브랜치를 들여다 보고 싶으면, git checkout main를 사용할 수 있다.

  • git merge : 브랜치에서 작업을 끝내고, 모든 협업자가 볼 수 있는 main 브랜치로 병합할 수 있다. "git merge hello"라고 입력한다면 hello브랜치에서 만든 모든 변경사항을 main로 추가한다.

  • config 설정 :

    git config --global wlgns410(깃허브 가입이름)
    git config --global wlgns410@gmail.com(가입 이메일)
    비밀번호 : (깃허브 가입 비밀번호)

  • remote 등록 :

    git remote add origin https://github.com/wlgns410(깃헙 주소)

5. git으로 하는 일

- 워킹 트리에서 파일 수정
- Staging Area에 파일을 Stage 해서 커밋할 스냅샷을 만든다.
- Staging Area에 있는 파일들을 커밋해 Git 디렉토리에 스냅샷으로 저장

Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
Modified는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.
git 기술용어 index를 staging area로 혼용해서 쓰기도 함

Git 디렉토리는 Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말한다. 이 Git 디렉토리가 Git의 핵심이다. 다른 컴퓨터에 있는 저장소를 Clone 할 때 Git 디렉토리가 만들어진다.

워킹 트리는 프로젝트의 특정 버전을 Checkout 한 것이다. Git 디렉토리는 지금 작업하는 디스크에 있고 그 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와서 워킹 트리를 만든다.

Staging Area는 Git 디렉토리에 있다. 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장한다.

Git 디렉토리에 있는 파일들은 Committed 상태이다. 파일을 수정하고 Staging Area에 추가했다면 Staged이다. 그리고 Checkout 하고 나서 수정했지만, 아직 Staging Area에 추가하지 않았으면 Modified이다.


출처

깃허브 메인 사이트

gitgub 참고 블로그 1, 명령어1 참고블로그 2, 명령어2 참고블로그 3

profile
꾸준하게 🐌

0개의 댓글