Git은 데이터를 파일 시스템 스냅샷의 연속으로 취급하고 크기가 아주 작다.
파일이 달라지지 않았으면 Git은 성능을 위해서 파일을 새로 저장하지 않는다.
Git은 프로젝트의 히스토리를 조회할 때 서버 없이 조회한다. 즉 오프라인 상태이거나 VPN에 연결하지 못해도 막힘없이 일할 수 있다.

📝 세 가지 상태

Committed, Modified, Staged

  • Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
  • Modified는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
  • Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.

📝 Git 저장소 만들기

  1. 아직 버전관리를 하지 않는 로컬 디렉토리 하나를 선택해서 Git 저장소를 적용하는 방법
  2. 다른 어딘가에서 Git 저장소를 clone 하는 방법

👉 기존 디렉토리를 Git 저장소로 만들기

Windows: $ cd /c/user/my_project
그리고 아래와 같은 명령을 실행한다.

git init
이 명령은 .git 이라는 하위 디렉토리를 만든다. 이 명령만으로는 아직 프로젝트의 어떤 파일도 관리하지 않는다.
Git이 파일을 관리하게 하려면 저장소에 파일을 추가하고 커밋해야 한다.
git add 명령으로 파일을 추가하고 git commit 명령으로 커밋한다.

$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'

👉 기존 저장소를 Clone 하기

다른 프로젝트에 참여하려거나 Git 저장소를 복사하고 싶을 때 git clone 명령을 사용한다.
git clone 을 사용하면 프로젝트 히스토리를 전부 받아온다.
git clone https://github.com/libgit2/libgit2
이 명령은 'libgit2'라는 디렉토리를 만들고 그 안에 .git 디렉토리를 만든다. 그리고 저장소의 데이터를 모두 가져와서 자동으로 가장 최신 버전을 Checkout 해놓는다.

📝 수정하고 저장소에 저장하기

👉 파일의 상태 확인하기

파일의 상태를 확인하려면 보통 git status 명령을 사용한다.
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
위의 내용은 파일을 하나도 수정하지 않았다는 것을 말해준다.

👉 파일 무시하기

어떤 파일은 Git이 관리할 필요가 없다. 그런 파일을 무시하려면 .gitignore파일을 만들고 그 안에 무시할 파일 패턴을 적는다.

👉 Staged와 Unstaged 상태의 변경 내용을 보기

단순히 파일이 변경됐다는 사실이 아니라 어떤 내용이 변경됐는지 살펴보려면 git status명령이 아니라 git diff 명령을 사용해야 한다.

👉 변경사항 커밋하기

git commit

👉 파일 삭제하기

Git에서 파일을 제거하려면 git rm명령으로 파일을 삭제한 후에 커밋해야 한다.

📝 리모트 저장소

👉 리모트 저장소

리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 말한다. 저장소는 여러 개가 있을 수 있는데 어떤 저장소는 읽고 쓰기 모두 할 수 있고 어떠 저장소는 읽기만 가능할 수 있다.
간단히 말해서 다른 사람들과 함께 일한다는 것은 리모트 저장소를 관리하면서 데이터를 거기에 Push 하고 Pull 하는 것이다. 리모트 저장소를 관리한다는 것은 저장소를 추가 삭제하는 것뿐만 아니라 브랜치를 관리하는 방법에 대해 설명한다.

👉 리모트 저장소 확인하기

git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있다. 저장소를 clone 하면 origin 이라는 이름을 볼 수 있다.
$git remote -v

👉 리모트 저장소 저장하기

git remote add <단축이름> <url> 명령을 사용한다.

👉 리모트 저장소를 Pull하거나 Fetch 하기

리모트 저장소에서 데이터를 가져오려면 아래와 같이 실행한다.
$ git fetch <remote>
이 명령은 로컬에는 없지만, 리모트 저장소에는 있는 데이터를 모두 가져온다.

그냥 쉽게 git pull 명령으로 리모트 저장소 브랜치에서 데이터를 가져올 뿐만 아니라 자동으로 로컬 브랜치와 Merge 시킬 수 있다. Clone 한 서버에서 데이터를 가져오고 그 데이터를 자동으로 현재 작업하는 코드와 Merge 시킨다.

👉 리모트 저장소에 Push 하기

프로젝트를 공유하고 싶을 때 Push 할 수 있다.
이 명령은 git push <리모트 저장소> <브랜치 이름> 으로 단순하다.

📝 브랜치란 무엇인가

모든 버전 관리 시스템은 브랜치를 지원한다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는데, 이렇게 독립적으로 개발하는 것이 브랜치다.

👉 새 브랜치 생성하기

git branch 명령으로 test 브랜치 만들어보자.
git branch test

👉 브랜치 이동하기

git checkout 명령으로 다른 브랜치로 이동할 수 있다. 한번 testing 브랜치로 바꿔보자.
$ git checkout testing

📝 Rebase 하기

👉 Rebase 하기

Git에서 한 브랜치에서 다른 브랜치로 합치는 방법으로는 두 가지가 있다.
하나는 Merge 이고 다른 하나는 Rebase 이다.

👉 Rebase 의 기초

두 개의 브랜치를 합치는 가장 쉬운 방법은 merge 명령을 사용하는 것이다.

출처: https://git-scm.com/

profile
매일 하는 것보다 중요한 건 그럼에도 불구하고 그만두지 않는 것

0개의 댓글