Programming/etc

Git의 모든 것

esoog Polaris 2023. 8. 23. 10:55
반응형

# Git

분산 버전 관리 시스템(Distributed Version Control System)의 하나로, 소스 코드와 같은 문서의 변경 이력을 관리하고 추적하는 도구입니다. Git은 프로젝트의 협업, 소스 코드 관리, 변경 이력 관리 등에 사용되며, 여러 사람이 동시에 작업하는 경우에도 원활한 협업과 버전 관리를 지원합니다.

1. **Repository (저장소)**:
   Git은 프로젝트의 모든 파일, 폴더, 이력 등을 저장하는 저장소를 가지고 있습니다. 이 저장소는 로컬 컴퓨터나 원격 서버에 위치할 수 있습니다.(.git 이라는 폴더다)

2. **Commit (커밋)**:
   커밋은 소스 코드 변경의 스냅샷을 의미합니다. 변경된 파일들의 모음이며, 각 커밋은 고유한 식별자(hash)를 가지며 변경 내용, 저자, 날짜 등의 정보를 포함합니다.

3. **Branch (브랜치)**:
   브랜치는 커밋의 시퀀스로, 개별적으로 다른 작업을 수행하기 위해 사용됩니다. 기본 브랜치는 보통 "master" 또는 "main"으로 시작하며, 새로운 브랜치를 생성하여 기존 코드를 수정하거나 새로운 기능을 개발할 수 있습니다.

 

4. **Merge (병합)**:
   브랜치에서 개발한 작업을 다른 브랜치에 통합하는 과정을 말합니다. 주로 기능을 완성한 후에 기본 브랜치로 병합하거나 브랜치 간의 변경 사항을 합칠 때 사용됩니다.

5. **Pull Request (풀 리퀘스트)**:
   Git을 사용하는 협업 환경에서 사용되는 개념으로, 다른 사람의 작업 내용을 확인하고 병합하기 전에 코드 변경 사항을 검토하는 메커니즘입니다.

6. **Remote (원격)**:
   Git 저장소는 로컬 컴퓨터 뿐만 아니라 원격 서버에도 존재할 수 있습니다. 원격 저장소는 여러 사람이 공유하고 협업할 수 있도록 도와줍니다.

7. **Clone (복제)**:
   원격 저장소를 로컬로 복제하여 로컬에서 작업할 수 있는 복제본을 만들 수 있습니다.

8. **Fetch와 Pull**:
   원격 저장소에서 변경된 사항을 로컬로 가져오는 과정을 말합니다. `git fetch`는 변경 사항을 가져오기만 하고, 로컬 코드에 적용하지는 않습니다. `git pull`은 변경 사항을 가져오고 로컬 코드에 적용하는 단계를 한 번에 수행합니다.

9. **Push (푸시)**:
   로컬에서 작업한 변경 사항을 원격 저장소로 업로드하는 과정을 말합니다.

 

10. 스냅샷(Snapshot):
Git에서의 스냅샷은 특정 시점의 프로젝트 전체 상태를 의미합니다. 이것은 파일 및 디렉토리 구조, 내용 등을 모두 포함합니다. Git은 파일의 변경사항을 추적하지 않고, 대신 파일의 스냅샷을 저장하고 각 스냅샷 간의 차이를 계산하여 변경 내역을 파악합니다. 이 방식은 변경 이력을 효율적으로 저장하고 관리하는 데 도움이 됩니다.

11. 체크아웃(Checkout):
체크아웃은 Git에서 특정 스냅샷으로 작업 디렉토리를 변경하는 작업을 의미합니다. 이는 브랜치를 변경하거나 특정 커밋으로 이동하는 데 사용됩니다. 체크아웃을 통해 작업 디렉토리의 파일과 내용을 선택한 스냅샷의 상태로 업데이트할 수 있습니다. 특정 커밋으로 작업 디렉토리를 변경하려면 해당 커밋의 해시값이나 식별자를 사용하여 `git checkout` 명령을 사용합니다. 예를 들어, `git checkout abc123`은 "abc123" 커밋으로 작업 디렉토리를 변경합니다.

 

12. HEAD(헤드):

현재 위치하고 있는 브랜치를 가리킴

 

13. Master(마스터):

현재 브랜치의 가장 최근 커밋 ID

 

14. Tag(태그):

특정 시점의 커밋(commit)을 마킹하고 릴리스 관리에 사용



Git은 버전 관리와 협업을 효과적으로 관리하며, 변경 이력을 추적하고 오류를 최소화하는 데 도움을 줍니다. 주요 코드 호스팅 플랫폼인 GitHub, GitLab, Bitbucket 등에서도 Git을 기반으로 프로젝트를 관리하고 협업할 수 있습니다.

 

* Working Directory는 기본 작업 폴더에서

Staging Area라는 가상의 무대위에 커밋 준비

커밋을 통해 Repository 저장소로 저장.

 

 

 

 

 

# 기본 사용 커맨드(CLI 환경)

 

먼저 GIT을 다운받고, git-bash창을 열어서 사용.

https://git-scm.com/download/win

 

Git - Downloading Package

Download for Windows Click here to download the latest (2.42.0) 32-bit version of Git for Windows. This is the most recent maintained build. It was released 8 days ago, on 2023-08-21. Other Git for Windows downloads Standalone Installer 32-bit Git for Wind

git-scm.com

 

 

1. 테스트 폴더 및 파일 생성(기본 커맨드 환경)

 

// 리눅스 기본 커맨드

ls -al 		전체 리스트 보기
mkdir 폴더명  	파일 만들기
cd 폴더명  	폴더 이동
cat 파일명 	파일 내용 보기



// vim 사용

vim 파일.확장자 		파일 생성
i 			인서트 모드
esc 			실행취소
:wp 			저장 및 탈출

 

 

2. 깃 저장소 생성 및 버전 관리

 

// git bash 커맨드

git init					깃 저장소 .깃 생성
git config --global user.name "이름"		깃등록(유저 이름)
git config --global user.email "이메일"		깃등록(유저 이메일)
git config --global --list 			등록 확인


git status					상태(브랜치, 커밋(버전)) 확인
git branch 브랜치명				브랜치 생성
git add hello1.txt				stage area 영역으로 올림
git rm --cached hello1.txt			Unstaging(스테이지에서만 제거)
git restore hello1.txt				작업 디렉토리에서 파일을 복원


git commit -m "cat v1"				버전 이름으로 Repository에 커밋
git commit -am "cat v2"				(기존 파일 수정시) -am 으로 add 없이 바로 커밋 가능
git log --stat					깃 기록


git tag v1.0 					v1.0이라는 이름의 태그를 만듦
git push origin <태그이름>			태그 푸시


git checkout 커밋id			  	버전 특정 회귀(해시ID) : HEAD의 이동
git checkout master			  	최신 버전으로 복귀
git reset 커밋id				이력을 변경하고, 커밋을 제거하거나 이동할 때 사용
git revert 커밋id				이전 커밋을 취소하는 새로운 커밋을 만들어 이력을 변경하지 않고 사용


git remote add origin 깃주소			원격 저장소 주소 추가
(여기서 origin은 별칭)
git push origin master				master브랜치로 프로젝트 저장


git clone 깃리포지토리주소			로컬에 깃저장소 복제

*참고(https://developer88.tistory.com/entry/Git-%EC%9D%84-%EC%B2%98%EC%9D%8C%EC%9C%BC%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%B4-%EB%B3%B4%EC%9E%90)

 

 

 

 

# GUI 환경 활용

 

sourcetree 다운로드 

https://www.sourcetreeapp.com/

 

Sourcetree | Free Git GUI for Mac and Windows

A Git GUI that offers a visual representation of your repositories. Sourcetree is a free Git client for Windows and Mac.

www.sourcetreeapp.com

* 설치시, bitbucket 건너뛰기

Mercurial 체크 해제

깃 닉네임 아이디 입력

 

 

728x90

'Programming > etc' 카테고리의 다른 글

프로그래머 일기 1  (0) 2023.09.13
API  (0) 2023.08.28
웹앱(Web app)에 관하여  (0) 2023.08.03
RESTful API(Representational State Transfer)  (0) 2023.08.03
C언어 포인터(pointer)에 관하여  (0) 2023.07.18