서론
요새 팀 프로젝트를 하면서, 점점 더 협업과 버전 관리에 대한 중요성을 느끼고 있다. GitHub에 코드를 올리기 전에, Git에 대한 이해가 있어야 할 것 같아서 정리해보게 됐다.
지난 번에 deep daiv의 특강에서 진행해주셨던 GitHub Hands-on Session 내용 정리와 함께 기존에 알고 있던 Git에 대한 내용을 적어보려고 한다.
Git이란?
여러 개발자들 간에 개발 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템
- 개발자의 Commit History를 통해 버전관리가 용이함
- 개발 프로젝트의 local 저장소와 원격 저장소를 분리하여 독립적인 코드 관리가 가능함
- 코드에 결함이 있을 시, Commit History를 살펴 확인해 복원이 빠르며, 코드 리뷰를 비롯해 협업이 최적화된 시스템
Branch
특정 Commit으로부터 분기되는 포인터, 개발자들이 개발을 진행하고 있는 환경 또는 흐름을 뜻함.
새로운 Branch가 생성되더라도 기존의 Main Branch는 유지
-
이후, 분기된 Branch를 다시 하나의 Branch로 합치는 것으로, Merge 과정에서 Conflict가 많이 발생
- Conflict 발생하지 않도록, 주기적으로 Pull로 Remote Repository에서 가져와주면서 작업할 수 있도록!
-
여러 Branch들을 한꺼번에 Merge할 때 차례차례 Main Branch로 병합한 상태에서 진행
-
보통, 쓰는 용도에 따라 branch를 나눈다.
Git 사용하는 법
- Git Bash: command line에서 이루어짐, terminal에서!
- server를 사용하기 위해서는 terminal 구조에서 사용함
- 따라서 여기에 익숙해지는 것이 좋음!
- GitHub Desktop: GUI로 하는 것
- 명령프롬포트(cmd)
- window 기준 기본 명령어
- dir : 폴더에 있는 모든 폴더와 파일을 보여줌
- cd + path : path로 이동
- '..' : 상위 디렉토리를 의미, e.g., cd .. : 상위 디렉토리로 이동
- cls : 기존 내용 지우기
여기서는 Git Bash를 사용해보고자 한다. 기본적인 명령어들은 cmd에서 실행할 경우, 운영체제에 따라 명령어가 달라질 수 있다.
Git 기본 사용법
Git Repository 복사하기
- local에서 사용하려면, 먼저 GitHub (Remote Repository, 원격 저장소)에서 가지고 와야한다.
- git clone [repository_url]
- private repository의 경우, GitHub 로그인 필요함
Git 상태 확인 및 올리는 법
Git 개념
- add → commit → push 으로 이루어짐
- Stage: 변경사항들이 반영되기 전, 해당 사항의 이력들이 저장되는 Index에 기록하는 행위를 Staging이라고 함
- Commit: 개별 변경 사항인 Stage가 반영된 이력
- add는 stage에 올려놓는 행위를 일컫고, stage에 올라온 것을 반영하는 것을 commit이라고 부르기 때문에
add와 commit은 하나의 세트라고 봐도 무방하다!
Git 상태 확인
- git status
- Git repository 현재 상황
- commit 할 변경 부분이 있는지 표시
clone한 후 cd를 통해 clone한 폴더로 꼭 이동 시켜줘야함!
Staging
- 해당 폴더에서 새로운 파일을 만들거나, 수정하거나 한 파일이 존재한다!
- 그러면 Staging을 해줘야 함
- git add .
- commit을 위한 stage에 파일을 올리기
- . : all
- 예시) new.txt라는 파일을 새로 생성
- 예시) helloworld.txt 파일 새로 생성, new.txt 파일 수정
- git diff: 파일 수정 시, add를 하기 전에 어느 부분이 달라졌는지 확인 가능!
이 파일의 경우, 빈 텍스트 파일이었는데 "안녕하세요!"라는 문장이 추가 된 것을 확인할 수 있음
Commit
- Stage가 반영된 이력을 최종적으로 반영하기 위한 작업
- git commit
- 으로도 그냥 커밋할 수 있지만,
- git commit -m [설명]
: git commit -m 뒤 설명을 통해 커밋 메시지를 설정해서 올리는 것을 권장!
Push
- 아직 remote repository에는 반영이 되지 않은 상황!
- Commit까지 해줬다면, push를 꼭 해줘야 remote repository (= 내 GitHub)에도 최종적으로 반영이 된다!
- git push origin <branch명>
Branch 기본 사용법
- git branch -a : 로컬, 리모트의 모든 브랜치 확인
- git branch <이름> : <이름>으로 새로운 브랜치 생성
- git branch -d <이름> : <이름> 브랜치 삭제
- branch 생성 시, local에서 먼저 생기기 때문에 remotes와 달리, 하얀색으로 뜨며 local에서만 생성됨.
- git checkout <이름> : <이름> 브랜치로 이동
- git merge <이름> : 현 branch와 <이름>을 통합
- git push origin <이름> : <이름> 브랜치를 remote에도 생성
- main으로 옮겨가서, main으로 feature을 merge 시키고 마무리~!
- git pull <리모트> <로컬>
- 작업하다보면, 다른 사람들과 작업 시 다른 사람이 코드 올리고 나면 내 local에는 pull 시켜주지 않는 이상 적용이 되지 않기 때문에 git pull을 통해 remote와 비슷한 상태를 유지시켜줘야한다.
- 나의 경우, 혼자 작업 중이기 때문에 remote repository와 상태가 동일하여 Already up to date 상태이다.