1. Git
- 버전 관리 시스템(VCS - Version Control System)
버전 관리란?
파일 변화를 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.
- 장점
작업하던 여러 버전이 기록되어 있기 때문에 백업에 대한 장점이 있어 쉽게 복구할 수 있다.
버전 간 수정 사항을 등록하여 협업 중 어떤 작업을 했는지 파악하기 용이하다.
Git은 데이터를 파일 시스템 스냅샵(특정 시점의 컴퓨터 파일 시스템 상태를 복사)의 연속으로 취급한다.
파일에 대한 변경 사항이 없을 경우 새로 파일을 저장하지 않는다.
데이터를 저장하기 전에 항상 체 그 섬(데이터에 에러가 있는지 알 수 있는 패리티 비트)을 구해 데이터를 관리한다.
- Commit 👉 데이터가 local DB에 저장 완료한 상태
- Modified 👉 수정한 파일을 아직 local DB에 커밋하지 않은 것을 의미한다.
- Staged 👉 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.
2. Github
Git으로 관리하는 프로젝트를 업로드할 수 있는 대표적인 Git 호스팅 사이트이다.
프로젝트 협업을 진행할 경우 코드에 변경 사항, 수정 사항을 확인할 수 있는 기능도 있다.
3. Branch
Github에 commit을 진행할 경우 개발의 줄기를 더럽히지 않으면서 일할 수 있게 분기를 통해 독립적으로 개발을
진행할 수 있는 저장 장소이다.
- working directory 👉 작업을 하는 프로젝트 디렉터리를 말한다.
- staging area 👉 git add를 한 파일들이 존재하는 영역이다. commit을 하게 되면 staging area에 있는 파일들만 커밋에 반영된다.
- repository 👉 working directory의 변경 이력들이 저장되어 있는 영역이다. commit들이 저장되는 영역으로 생각하면 된다.
즉, working diretory에서 작업을 하여 변경 사항이 있을 경우, 작업한 파일들을 git add 해주고, commit을 하면 staging area에 있던 파일들이 repository에 저장된다.(이때 생성되는. git 디렉터리가 repository이다.)
위 그림을 해석해 보면 working directory에서 A.txt파일과 B.txt 파일을 작성하고,
git add A.txt와 git add B.txt를 실행해서 A.txt, B.txt 두 파일을 staging area에 업로드한다.
git commit -m "Ver_1"를 실행하여 staging area에 있는 파일들을 가져와 commit으로 남기게 된다.
4. Git commend 정리
(필요한 내용은 ctrl+f 이용하세요)
- Git 저장소 생성하기 - 현재 폴더에. git 파일 생성됨 👉 git init
- Github 주소와 연결 👉 git remote add origin [github 주소]
- Github에 이미 repository가 존재하는 경우 - 저장소 복제 및 다운로드 👉 git clone [https: repository 주소]
- 브랜치 생성 👉 git branch [브랜치명]
- 해당 브랜치로 이동 👉 git checkout [브랜치명]
- 브랜치를 생성하고 해당 브랜치로 바로 이동 👉 git branch -b [브랜치명]
- 원하는 브랜치로 이동했는지 확인 - 현재 생성된 브랜치들과 지금 있는 브랜치 위치를 표시 👉 git branch
- 모든 브랜치 확인 👉 git branch -a
- 커밋 생성 👉 git commit -m "commit message"
- 원하는 브랜치로 push 하여 원격 서버에 저장 👉 git push origin [브랜치명] (원격 저장소의 변경 내용을 현재 디렉터리로 가져오기)
- 원격 저장소의 변경 내용을 현재 디렉토리로 가져오기 👉 git pull [커밋 가져올 브랜치] or git fetch [""]
git pull (pull은 최신 커밋을 받아온 다음 local과 자동 병합을 진행하므로 commit을 사용해야 한다.
git fetch (최신 커밋을 받아온 후 이름 없는 임시 브랜치로 내려받기만 하고 병합은 하지 않는다.
즉, 병합을 하기 위해서 fetct 후에 merge가 필요하므로 fetch 후 merge가 더 안전한 방법이다✔. - 현재 브랜치에 다른 브랜치 수정사항 병합 👉 git merge [다른 브랜치 이름]
- 현재 상태 확인 👉 git status (git add, commit 여부 등을 파악, 어떤 수정사항들이 staged 됐는지 알 수 있다.)
- 브랜치 삭제 👉 git branch -d [브랜치 이름]
- 현재 상태 임시 저장 👉 git stash
- 임시 저장 목록 확인 👉 git stash list
- 가장 최근 stash 가져오기 👉 git stash apply git stash apply [stash 이름]
- 가장 최근 stash 삭제 👉 git stash drop
- 모든 stash 삭제 👉 git stash clear
- 다른 브랜치 커밋만 가져올 때 👉 git cherry - pick