깃 (Git)

jacoblee19·2020년 12월 2일
1

Computer Science

목록 보기
8/18
post-thumbnail

> Git

Git의 공식 명칭은 **분산 버전 관리 시스템(VCS)**이다.
쉽게 말하면, 프로젝트 파일의 변경 사항을 추적하는 시스템이다.

  • Git을 통해 개발자들은 프로젝트의 변경 사항을 기록하고, 특정 시점의 버전으로 언제든 돌아갈 수 있다.
  • 버전 관리 시스템은 많은 사람들이 효율적으로 함께 작업하고, 프로젝트를 중심으로 협업할 때 사용할 수 있다.
  • 각 개발자가 자신만의 프로젝트 버전을 본인 컴퓨터에 갖게 되고, 나중에 이러한 개별 버전의 프로젝트를 병합하여 기준이 되는 버전의 프로젝트에 적용 할 수 있게 된다.

Git 설치 - 설치 링크

설치 후 버전 확인
git --version

이름 & 이메일 설정하기

git config --global user.name "이름"
git config --global user.email "이메일"

Repository (저장소)

Git repository는 Git으로 관리하는 프로젝트 저장소이다.

  • Local repository: 본인의 컴퓨터에 저장된 로컬 버전의 프로젝트 저장소.

  • Remote repository: 로컬 repository와는 반대로 내 컴퓨터가 아닌 (일반적으로 원격 서버) 버전의 프로젝트 저장소.

    • 팀에서 작업할 때 유용하다.
    • 프로젝트 코드를 공유할 수 있고, 다른 사람의 코드를 확인할 수 있다.
    • 로컬 버전의 프로젝트와 병합하고, 변경 사항을 적용할 수 있는 곳이다.

Initializing a repository (깃 저장소 생성)

새 저장소를 만들고 Git으로 프로젝트 관리를 시작하려면 터미널에서 프로젝트 폴더로 이동 후 아래 명령어를 실행해주면된다.

git init

위 명령어를 사용하면 폴더 내에 숨겨진 .git 디렉토리를 생성한다.
이 후에 Git은 현재 저장소에 대한 모든 변경사항을 추적/관리하게 된다.

> Staging and committing code

Git에서 **commit**이란, 프로젝트의 현재 상태를 나타내는 체크포인트 또는 스냅샷으로 생각할 수 있다.
쉽게 말해, 현재 버전의 코드를 커밋에 저장한다고 생각하면 된다.

  • 커밋 히스토리에 필요한 만큼 커밋을 생성할 수 있다.
  • 커밋 간 앞뒤로 이동하여 프로젝트 코드의 다른 변경사항을 확인할 수 있다.
  • 커밋을 사용함으로 프로젝트의 진행 상황을 효율적으로 관리할 수 있다.
  • 일반적으로 커밋을 남기는 시점은 특정 내용, 기능을 추가한 후 또는 수정 사항을 적용한 후 정도로 들 수 있다.

현재 스테이지가 궁금하다면🧐?

git으로 작업중인 현재 상태가 궁금하거나, 파일이 추가된 것을 확인하고 싶다면 아래 명령어를 입력해주면 된다.

git status

Staging files (Staging area에 파일 추가하기)

프로젝트에서 git add 명령어를 사용하면 원하는 파일들을 **staging area**로 추가할 수 잇다.

# 파일 하나 추가
git add hello.py

# 파일 여러 개 추가
git add hello1.py hello2.py hello3.py

# 파일 한 번에 추가
git add .

Making commits (커밋 남기기)

git add로 파일을 staging area에 추가 해주었다면, 이제 커밋 명렁어로 커밋을 남길 수 있다.

git commit -m "Commit message"

Commit history

프로젝트의 모든 커밋 내역을 보고싶다면 다음 명령어를 입력하면 된다.

git log

git log를 보다가 특정 커밋 시점으로 코드를 돌리고 싶다면, 아래 명령어를 사용해준다.

git checkout <commit-hash>

# commit-hash example
commit c587656320540a81d40d5f908888a692e511922d (origin/feature/juhyung-lee)

Ignoring files

staging area에 추가하고 싶지 않거나, git에서 관리하지 않아도 되는 파일이 있다면
.gitignore 파일을 프로젝트 폴더에 생성해주면 된다.

# .gitignore example

.DS_*
*.log
logs
**/*.backup.*
**/*.back.*
node_modules
bower_components

.gitignore 파일 안에, 해당하는 파일명과 폴더명을 나열하면 된다 (새로운 줄에 입력되어야 함).

> Branches

브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념이다.
필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치로부터 아무 영향도 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다.

여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 메인 브랜치에서 자신의 작업 전용 브랜치를 만든다.
그리고 각자 작업을 진행 후, 작업이 끝난 사람이 메인 브랜치에 자신의 브랜치의 변경 사항을 적용한다.

이렇게 함으로써** 다른 사람의 작업에 영향을 받지 않게 되고, 독립적으로 특정 작업을 수행한 다음, 그 결과를 하나로 모아서** 나가게 된다.
이러한 방식으로 작업을 하는 경우 , 즉 브랜치로 그 작업의 기록을 중간 중간 남기게 되므로,
문제가 발생할 경우 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워진다.

저장소를 처음 만들면 Git은 바로 master라는 이름의 브랜치를 만들어 둔다. 이 새로운 저장소에 새로운 파일을 추가 한다거나 추가한 파일의 내용을 변경하고,
그 내용을 저장(commit)하는 것을 모두 master라는 이름의 브랜치를 통해 처리할 수 있게 되는 것이다.

Master 브랜치가 아닌 또 다른 브랜치를 만들어서 사용하려고 선언하지 않는 이상 모든 작업은 default로 마스터 브랜치에서 이루어 진다.

Creating a new branch (브랜치 생성하기)

아래 명령어를 사용해서 새로운 브랜치를 생성할 수 있다.

git branch <branch-name>

새로 만들어진 브랜치는 현재 프로젝트의 코드를 그대로 반영해서 생성된다.
보통 코드를 개선하고 새로운 실험 기능을 추가하는 등의 작업을 할 수 있는 development 브랜치를 만드는 것이 좋다.
새로운 기능을 개발하고 테스트 한 후 버그가 없고, 사용할 준비가 되있는지 확인했다면 최종적으로 master 브랜치에 병합할 수 있다.

Changing branches (브랜치 전환하기)

git checkout <branch-name>

브랜치를 이동하면 그 이후의 작업은 해당 브랜치에만 영향을 주게 되고, 다른 브랜치로 이동하기 전까지는 다른 브랜치에 영향을 전혀 받지 않게 된다.

아래 명령어로 브랜치를 만듦과 동시에 전환하는 것도 가능하다.

git checkout -b <new-branch-name>

Merging branches (브랜치 병합하기)

git merge <branch-name>

A라는 브랜치에서 작업한 내용을 B라는 브랜치에 적용하고 싶다면, 브랜치 A와 B를 병합(merge) 해줄 수 있다.

특정 브랜치에서 새로운 기능의 구현과 테스트를 완료했다면, 이제 기준이 되는 마스터 브랜치에 적용시켜야 하는데, 그럴 때 merge를 사용한다.

Deleting a branch (브랜치 삭제하기)

아래 명령어를 사용해서 브랜치를 삭제하는 것도 가능하다.

git branch -d <branch-name>
profile
Back-end Developer 🙇‍♂️ 💻 🙆‍♂️

0개의 댓글