티스토리 뷰

Git

1. Git이란?

분산 버전관리 시스템'으로, 컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 파일에 대한 작업을 조율하는데 사용된다.

 

즉, 주로 여러명의 개발자가 하나의 소프트웨어 개발 프로젝트에 참여할 때, 소스 코드를 관리하는데 주로 사용된다.

2. Git 기본 용어

1) repository : 프로젝트의 모든 파일, 폴더 및 관련 이력을 저장하는 곳이다. 이러한 저장소에는 프로젝트의 모든 버전 제어 및 변경 이력이 포함된다.

 

일반적으로 프로젝트의 Git 저장소에는 다음과 같은 요소가 포함된다.

  (1) 버전 관리된 파일 : 프로젝트의 모든 파일 및 폴더

  (2) history : 파일의 변경 이력이 기록된다. 이로써 이전 상태로 롤백하거나 특정 시점의 코드를 검토할 수 있다.

  (3) branch : 동시에 여러 작업을 수행할 수 있도록 프로젝트를 분리하는 기능으로, 각각의 브랜치는 독립적인 작업 공간을 제공하며, 변경 사항을 다른 브랜치로 병합할 수 있다.

  (4) remote repository(원격 저장소) : 인터넷이나 네트워크에 있는 다른 서버에 프로젝트의 복사본을 저장한다. 이를 통해 여러 사용자가 프로젝트에 접근하고 협업할 수 있다.

 

2) local : 사용자의 개발 환경에 있는 저장소를 가리킨다. 이 저장소는 사용자의 컴퓨터나 로컬 네트워크에 위치하며, 프로젝트 파일과 git 이력을 포함한다. 로컬 저장소는 주로 개발자가 프로젝트를 수정하고 변경 사항을 추적하며, 이력을 관리하는데 사용된다.

 

3) remote : 로컬 컴퓨터나 네트워크에 외부의 다른 위치에 있는 저장소를 가리킨다. remote repository는 프로젝트의 중앙 서버 역할을 하며, 여러 사용자가 프로젝트를 공유하고 협업할 수 있도록 한다.

 

4) branch : 프로젝트의 변경 이력을 관리하는 데 사용되는 가변적인 포인터이다. 각 브랜치는 프로젝트의 특정 시점을 가리키는 참조로서, 개발자는 브랜치를 생성하고 변경하여 프로젝트의 다양한 작업을 분리하고 관리할 수 있다.

 

5) commit : 프로젝트의 변경 사항을 로컬 저장소에 저장하는 작업을 가리킨다. 커밋은 프로젝트의 특정 시점에서 파일의 상태를 기록하는 것으로, 프로젝트의 이력을 관리하고 추적하는데 중요한 역할을 한다. 깃은 차이점(추가되거나 빠진 내용)만 골라서 저장한다.

 

6) staging : 변경된 파일을 커밋하기 전에 준비하는 과정을 가리킨다. 스테이징 영역은 변경된 파일을 커밋할 준비가 되었는지 확인하고 커밋에 포함될 파일을 선택하는데 사용된다.

✓ git add 명령어를 통해 수정된 파일을 스테이징 영역에 담을 수 있다.

✓ 스테이징 영역은 커밋하기 위한 파일들을 담는 박스이고, commit 하는 것은 박스에 담긴 파일들을 간단한 코멘트(커밋 메시지)를 남겨 라벨링을 해주는 것이라고 볼 수 있다.

 

7) push : git에서 push는 로컬 저장소의 변경 사항을 원격 저장소로 업로드하는 작업을 가리킨다. 즉, 로컬에서 작업한 커밋을 원격 저장소에 전송하여 다른 사용자와 변경 사항을 공유하는 것이다.

 

8) fetch : git에서 fetch는 원격 저장소의 최신 변경 사항을 로컬 저장소로 가져오는 작업을 말한다. fetch를 통해 원격 저장소의 변경 사항을 로컬로 가져와서 확인할 수 있지만, 로컬 작업 공간에는 아직 반영되지 않는다. 즉, 변경 사항을 로컬로 다운로드하지만 로컬 코드에는 적용하지는 않는다.

 

fetch한 변경 사항을 로컬로 병합하려면, merge나 rebase와 같은 명령을 사용하여 수동으로 병합해야 한다.

 

3. 명령어 - 개발 환경

Git 명령어의 일반적인 구조 → $ git <명령어> [옵션] [목적어]

1) git config

git 설정을 관리하기 위한 명령어, 이 명령어를 사용하여 Git의 다양한 설정을 보고, 변경하고, 설정할 수 있다.

 

• git config –global user.name “username” → 전역 설정으로 사용자 이름설정

• git config –global user.email “email@gmail.com” → 전역 설정으로 사용자 이메일 주소설정 

✓ 전역설정 : 해당 컴퓨터의 모든 git 저장소에서 사용

 

2) git init

git 저장소를 초기화하기 위한 명령어. 현재 디렉토리에 git 저장소를 생성하고 깃 버전 관리를 시작할 수 있다. 브랜치, 버전 등의 정보들이 이 .git 폴더 안에 저장되고, 이는 숨겨진 폴더이다.

.git이 있는 디렉토리를 로컬 리포지토리라고 할 수 있다.

✓ ls -a : 현재 디렉터리의 파일 밀 디렉터리 목록을 표시한다. (-a를 적으면 숨겨진 파일과 디렉터리도 포함하여 표시)

 

3) git remote

git에서 원격 저장소를 관리하는데 사용되는 명령어이다. 이 명령어를 사용하면 로컬 저장소와 연결된 원격 저장소를 확인하고 추가, 삭제, 이름변경 등의 작업을 수행할 수 있다.

 

4) git clone

원격 저장소의 내용을 복제하여 로컬에 새로운 저장소를 생성한다. 이를 통해 원격 저장소의 내용과 히스토리를 로컬 환경으로 가져올 수 있다.

4. 명령어 - 개발 중

1) git branch

브랜치를 생성하거나 관리하는데 사용된다.

 

• git branch <새로운 브랜치 이름> → 새로운 브랜치 생성

• git branch → 로컬 저장소의 브랜치 목록 확인

• git branch -r → 원격 저장소의 브랜치 목록 확인

• git branch -a → 로컬 및 원격 저장소의 브랜치 목록 확인

• git branch -d <삭제한 브랜치 이름> → 브랜치 삭제

• git branch -m <이전 브랜치 이름> <새로운 브랜치 이름> → 브랜치 이름 변경

 

2) git checkout

브랜치를 전환하거나 파일을 체크아웃하는데 사용된다. 특정 브랜치의 상태로 작업 브랜치를 업데이트하는 명령어이다.

• git checkout <전환할 브랜치 이름> → 다른 브랜치로 전환

• git checkout -b <새로운 브랜치 이름> → 새로운 브랜치 생성 및 전환

 

3) git status

현재 작업 디렉토리의 상태를 확인하는데 사용된다.

주로 다음과 같은 정보를 얻을 수 있다.

  1. 추적 중인 파일 : Git이 추적하고 있는 파일의 변경 사항을 표시한다.
  2. 추적되지 않은 파일 : Git이 추적하지 않고 있는 파일의 존재를 알려준다.
  3. 커밋되지 않은 변경 사항 : 작업 디렉토리에서 이루어진 변경 사항 중 아직 커밋되지 않은 것들을 보여준다.

4) git add

작업 디렉토리의 변경 사항을 스테이징영역에 추가하는데 사용된다. 스테이징 영역에 추가된 파일들은 다음 커밋에 포함될 준비가 된다.

 

• git add <파일 이름> → 단일 파일 추가

• git add . →  현재 디렉토리의 모든 변경 사항 추가

 

5) git commit

스테이징 영역에 있는 변경 사항을 commit하는데 사용된다. 이 명령어를 사용하여 작업 디렉토리에 있는 변경 사항을 커밋하여 Git 저장소에 영구적으로 기록할 수 있다

 

• git commit →  Git은 커밋을 위한 텍스트 편집기를 열고 커밋 메시지를 입력할 수 있는 창을 제공한다. 커밋 메시지를 입력하고 저장하면 해당 변경 사항이 커밋된다.

• git commit -m “커밋메시지" →  -m 옵션을 사용하여 명령어와 함께 간단한 커밋 메시지를 직접 입력할 수 있다.

• git commit -a → 모든 변경 사항을 자동으로 스테이징하고 커밋한다. 이 옵션을 사용하면 ‘git add’ 명령어를 사용하여 스테이징하는 단계를 생략할 수 있다.

 

6) git log

커밋 로그를 조회하는데 사용된다. 이 명령어를 사용하면 저장소의 커밋 기록을 볼 수 있다.

 

• git log  → 전체 커밋 로그 조회

• git log –oneline → 커밋 로그 한 줄씩 출력

 

7) git push

로컬 저장소의 커밋을 원격 저장소로 업로드하는데 사용된다. 즉, 로컬에서 작업한 변경 사항을 원격 저장소에 반영하는 과정을 진행한다.

 

• git push -u origin <브랜치명>  → 로컬과 원격의 브랜치를 연결 (맨 처음 push시 사용)

• git push → 업스트림 브랜치가 설정된 후에 push시 사용

 

8) git fetch

원격 저장소의 최신 변경 사항을 로컬 저장소로 가져오는 명령어이다. 로컬 저장소의 변경 사항을 업데이트하고 최신 커밋을 확인하기 위해 사용된다.

 

• git fetch <원격 저장소 이름>

5. 명령어 - 협업

1) git merge

두 개의 분기된 브랜치를 병합하는데 사용된다.

즉, 한개의 브랜치의 변경 사항을 다른 브랜치에 통합하는 과정을 진행한다.

•  git merge <브랜치 이름>

 

2) git pull

원격 저장소로부터 최신 변경 사항을 가져와서 로컬 저장소에 병합하는 명령어이다.

git fetch + git merge인 단축 명령어로 생각할 수 있다.

• git pull origin <브랜치 이름>

 

✓ conflict

두 가지 이상의 변경 사항이 동일한 부분을 수정하거나, 한 브랜치에서 다른 브랜치로 병합할 때 변경 사항이 충돌하는 경우 발생한다. (Git이 자동으로 병합할 수 없는 상황이라고 판단할 때 발생)

충돌이 발생하면 Git은 충돌이 발생한 파일의 해당 부분을 표시하고, 충돌을 해결하도록 사용자에게 알려준다. 충돌을 해결한 후에 다시 스테이징하고 커밋하여 해결할 수 있다.

6. Pull request

git의 pull request는 협업하는 개발자들이 서로의 변경 사항을 검토하고 변경하는 프로세스를 효율적으로 관리하기 위한 도구이다.

 

pull request의 절차

  1. 브랜치 생성 : 변경하고자 하는 기능이나 버그 수정과 같은 작업을 위해 새로운 브랜치 생성
  2. 코드 작성 : 해당 브랜치에서 코드를 작성하고 변경 사항을 커밋
  3. 원격 저장소로 푸시 : 로컬에서 작업한 변경 사항을 원격 저장소로 푸시
  4. Pull request 생성 : 변경 사항이 담긴 브랜치에서 원본 브랜치로 pull request를 생성한다.
  5. 검토 및 토론 : pull request를 생성한 후, 다른 개발자들이 코드 변경 사항을 검토하고 논의할 수 있다. 피드백을 받고 코드를 개선하는 과정이 이뤄진다.
  6. 코드 수정 : 피드백을 받은 후에는 필요한 변경 사항을 수행하고 커밋한다.
  7. 병합 : 변경 사항에 만족하고 모든 토론이 해결되면 pull request를 병합하여 원본 브랜치로 변경 사항을 반영한다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함