안녕하세요, 오늘은 SSAFY 교육생과 초보 개발자 모두에게 유용한 Git 사용법에 대해 정리하려고 합니다. 기초적이고 간단한 내용 위주로 차근차근 설명해드릴게요.
1. Git 정의와 사용하는 이유
(1) Git이란?
분산형 버전 관리 시스템(VCS, Version Control System)으로서 소프트웨어를 개발할 때 소스코드를 효과적으로 관리할 수 있게 도와주고 프로그램의 버전 관리를 위한 무료 & 공개 소프트웨어입니다. Git repository 라고 하는 가상 저장 공간에 자신이 만들고 수정한 코드를 push(업로드와 유사한 개념)하거나 자신 또는 다른 사람이 작성하고 Git에 저장해놓은 코드를 pull(다운로드와 유사한 개념)해서 사용할 수 있는 게 가장 큰 특징입니다.
(2) Git을 사용하는 이유와 장점
1) 동시 작업에 유용
소스 코드를 서로 주고 받을 필요 없이 여러 명이서 동시에 작업하고, 수정한 내용만 반영하면 되기 때문에 여러 명이 협업할 때 장점이 있습니다.
2) 클라우드 베이스 작업
로컬 작업의 단점은 소스 코드를 작업하다가 파일이 손상되는 경우 복구가 어렵고, 실시간으로 변경 사항을 여러 사람과 공유하는데 어려움이 있다는 것이 있습니다. Git은 클라우드 베이스로 작업이 진행되므로 인터넷이 없더라도 미리 pull 받은 코드를 수정할 수 있고, 특정 로컬 환경에 접근하기 어려운 경우에도 Git에 접속할 수 있기만 하면 작업에 큰 무리가 없다는 장점이 있습니다.
3) 프로젝트 작업물 개발의 체계성
팀 단위의 작업뿐만 아니라 개인 프로젝트라도 Git을 이용하면 체계적인 개발이 가능하고, 패치 사항을 배포하는 과정이 간단해집니다.
2. Git 설정 및 프로젝트 생성
(1) Git 최초 설정
깃 최초 설정 시에 사용자 이름(user name)과 이메일을 등록해줘야 한다. 그 이유는 commit 할 때 사용자 이름과 이메일로 기록을 하기 때문이다.
# 1. 사용자 이름 및 이메일 설정
git config --global user.name {username}
git config --global user.email {useremail@email.com}
# 확인
git config --global user.name # 위에서 {username}으로 입력한 값이 나오는지 확인
git config --global user.email # 위에서 {useremail@email.com}에 입력한 값이 나오는지 확인
# 3. 기본 브랜치 이름 변경
git config --global init.defaultBranch main
git config --global init.defaultBranch(2) 프로젝트 생성
1) git에서 새로운 repository 생성 후 해당 주소(http 형식) 복사
2) Repository와 연결할 프로젝트 파일 디렉토리에서 마우스 오른쪽을 눌러 [window OS] 'Git Bash Here', [Mac OS] '새로운 터미널 탭 열기' 클릭 (이 과정 진행 전에 Git을 컴퓨터에 깔아놓아야 git 과 연동할 수 있습니다)

3) 위 화면과 같이 git bash 터미널 창에서 아래 작업 수행
# 1. 터미널 열어서 폴더 경로에서 git 연동
git init
# (선택 사항) git 현재 상태 확인
git status(3) Git에 파일 반영하기
# 버전에 파일 담기
git add {filename.확장자명} # '확장자명'에는 파일 형식을 작성. 예를 들어 텍스트 파일은 .txt
# 현재 디렉토리의 모든 파일 담기
git add .
# git add 취소하기
git rm --cached {file}
# 버전으로 묶어주기
# vi 입력 모드로 진입
git commit
# 커밋 메시지 작성
git commit -m "{message}" # message에는 어떤 사항을 commit 하는지 작성하는 습관을 들이면 좋다!
# 커밋 이력 확인
git log
# 파일 변경 사항 자세히 보기
git diff
# add와 commit을 한 번에 하기 (untracked file이 없을 때)
git commit -am "{message}"3. Branch
(1) Branch 정의와 사용하는 이유
Branch는 분기된 차원을 의미하며 전체 프로젝트 파일을 하나 이상의 모습으로 관리해야 할 때 사용한다. 예를 들어 서비스를 업데이트 해야 하는데 현재 배포된 파일을 수정하면 서비스를 중단해야 하므로 프로젝트 파일을 테스트 서버용, 실제 배포용으로 나눠서 관리하는데 그 때 Branch로 나누어서 관리한다.
실제 현업에서 여러 작업들을 각각 독립되어 진행한 다음 각자 작업한 최종 파일을 메인 브랜치에 통합해서 업데이트하는 방식으로 일을 한다고 한다.
(2) Branch 생성, 이동, 삭제
# 브랜치 생성
git branch {신규 브랜치 명}
# 브랜치 목록 확인
git branch
# 다른 브랜치로 이동
git switch {신규 브랜치 명}
# 브랜치 생성과 이동을 동시에 하기
git switch -c {신규 브랜치 명}
# 브랜치 삭제하기
git branch -d {삭제할 브랜치 명}
# 만약 다른 브랜치로 가져가지 않은 내용이 삭제할 브랜치에 있는 경우 강제 삭제
git branch -D {강제 삭제할 브랜치 명}
# 브랜치 이름 변경({기존 브랜치 명}과 {신규 브랜치 명} 사이에 ' '(공백)으로 구분한다)
git branch -m {기존 브랜치 명} {신규 브랜치 명}
# 여러 브랜치 내역을 한 번에 보기
git log --al --decorate --oneline --graph(1) Branch Merge(합치기)
Merge: 두 브랜치를 한 커밋에 이어붙이는 방식
사용하는 이유: 브랜치 사용 내역을 남길 필요가 있을 때
1) Merge 기본
# merge 사용하기
# 합쳐져서 주요 대상이 될 브랜치로 이동
# merge는 reset으로 되돌리기가 가능하다. merge하기 전 해당 브랜치 마지막 시점으로 reset
git switch main
git merge add-coach
# 병합된 브랜치는 삭제
git branch -d add-coach1) Rebase
Rebase: 브랜치를 다른 브랜치에 이어붙이는 방법
<목적>
한 줄로 깔끔히 정리된 내용을 유지하기 원할 때
이미 팀원들과 공유한 커밋에 대해서는 사용하지 않는 것이 적합합니다.
# Rebase로 합치기
# merge와 반대로 합쳐질 브랜치로 이동한다.
git switch new-teams
git rebase main
# new-teams 브랜치가 main에 합쳐졌지만 아직 main은 new-teams 브랜치의 끝에 있지 않다.
# 따라서 main 브랜치로 이동 후 new-team의 시점으로 fast-forward 해준다.
git merge new-teams
# 합친 브랜치 삭제
git branch -d new-teams4. 원격 저장소 사용하기
(1) git과 github 연동하기
# 로컬에 원격 저장소 추가 후 push (repository 명령어 복붙)
# 여기서는 https 프로토콜 사용
# 로컬의 git 저장소에 원격 저장소로 연결 추가
git remote add origin {원격 저장소 주소}
# 브랜치 명 수정
git branch -M main
# 로컬 저장소의 커밋 내역을 저장소에 push(업로드)
git push -u origin main
# 원격 저장소 목록보기
git remote
git remote -v
# 원격 지우기 (github repository가 지워지는 것이 아니라 로컬 프로젝트와의 연결만 삭제)
git remote remove {origin 등 원격 이름}
# Github에서 프로젝트 다운받기
git clone {원격 저장소 주소: https로 시작}(2) Push & Pull
원격 저장소에 업로드(push), 다운로드(pull) 하는 방법
# git bash에서 git push & pull 할 디렉토리에서 설정해야 한다.
# 원격으로 커밋 올리기(push) (내 작업 환경 -> repository)
git push
# 원격으로 커밋 당겨오기(pull) (repository -> 내 작업 환경)
git pull5. 끝마치며
이번 기사에서는 git과 설정 방법에 대해 알아보았는데요, 이번 기사에서 다룬 내용은 git의 일부이고, 기초 세팅 정도의 수준만 다룬 내용이니 필요한 내용, 더 알아보고 싶은 내용이 있다면 git 공식 문서(git 한국어 링크) 혹은 아래 자료를 통해 구성해보셨으면 좋겠습니다.
참고 자료
1. Youtube 얄팍한 코딩사전 - 제대로 파는 Git & GitHub - 깃 끝.장.내.기(2022.1.21.)
https://www.youtube.com/watch?v=1I3hMwQU6GU
2. Learn Git, https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud
Learn Git with Bitbucket Cloud | Atlassian Git Tutorial
In this tutorial, we'll show you how to create a new branch on Git using Bitbucket Cloud.
www.atlassian.com
'SSAFY > SSAFYcial' 카테고리의 다른 글
| [SSAFY/SSAFYcial] SSAFY 금융권 현직자 멘토링(우리은행 엘사 멘토님) (18) | 2023.10.31 |
|---|---|
| 알고리즘 스터디 가이드 (14) | 2023.10.29 |
| 개발자 추천 뉴스레터 (0) | 2023.09.25 |
| [SSAFY/SSAFYcial] 자치회의 알고리즘 실력 향상 프로젝트! (0) | 2023.08.31 |
| [SSAFY/SSAFYcial] SSAFY 자치회 탐구 (3) | 2023.08.31 |