개념
git?
- 분산버전 관리 시스템.
- 로컬 환경의 파일을 추적하다가 소스를 수정하면 그 변경 사항을 감지.
- 사용자는 자신이 리모트 서버에 변경 사항을 반영하고 싶은 파일이나 소스코드의 라인을 고른 뒤 리모트 서버에 업로드
- 파일을 항상 보고 있음. 24시간 365일.
무엇을? 변화를! 모든 파일의 변화 기록.
변화? 무엇이, 어디서, 몇번, 몇시, 누가 모든 변화된 내용을 추적
- 같은 파일에 대한 각기 다른 버전 보관 가능.
gitlab?
- 클라우드에 있는 깃 제공자.
- 내 컴퓨터에서 깃히스토리를 가져와서 클라우드에 있는 깃웹사이트에 푸쉬하는 것. 다른 사용자는 이를 가져올 수 있음
- 모든 변화 기록 확인 가능
remote와 origin
git을 사용할 때는 내가 어떤 리모트 서버에 변경 사항을 업로드 할 것인지 정해야하는데 반드시 하나의 리모트 서버만 사용할 수 있는 것이 아니기 때문에 내가 사용하는 리모트 서버의 이름을 정해줘야한다. 이때 주로 사용하는 관례적인 이름이 바로 origin.
repository
- 파일이나 디렉토리를 저장하는 장소.
- git repository는 변경 이력이 존재하는 파일별로 구분되어 저장.
- 내 컴퓨터에 있는 '로컬 저장소'와 전용 서버에서 관리되는 '원격 저장소'.
- 로컬 저장소에서 작업을 진행하고 그 결과를 원격 저장소에 저장가능.
- 리모트 서버 내에서 구분되는 프로젝트 단위.
- 레파지토리를 clone받을 때는 해당 레퍼지토리를 가리키는 URL이 필요한데 URL의 맨 마지막에 .git 확장자를 가지는 방식으로 표현.
branch
- 소프트웨어가 출시된 이후 버전의 지속적인 유지보수를 통해 기능을 추가하거나 버그를 수정하게 되는데 이처럼 여러버전을 관리하기 위해 사용하는 기능
- 독립된 작업을 진행하기 위한 작업 공간.
- 맨 처음 git을 초기화 했을 때 기본적으로 master(메인 브랜치)라는 이름의 브랜치 생성.
- 개발하는 기능 또는 버그 픽스에 따라서 브랜치를 새로 생성하고 거기서 작업한 후에 나중에 다시 master로 합침.
- branch는 어떤 branch에서 분리시키는 것이고 분리된 branch는 분리될 당시의 부모 branch 상태를 그대로 가지고 있음.
기본 명령어 및 설명
git init
- 폴더를 깃 명령어를 이용할 수 있는 폴더로 만듬
- git의 모든것이 담겨있는 .git이라는 폴더를 만듬
- master 브랜치 생성.
git clone ~.git
- 리모트 서버의 레파지토리에서 클라이언트로 파일을 복붙하는 행위.
- 어떤 레파지토리에서 파일을 가져올 것인지에 대한 정보가 필요한데 이를 URL로 표현.
- 현재 위치에 레파지토리 이름과 동일한 디렉토리 밑 소스 전부 복사
git push
- 로컬 컴퓨터에서 작업하고 깃허브에 변경사항을 "push". remote 저장소에 정보 저장.
git pull
- 나의 로컬 저장소에 불러오는 것
- 리모트 서버의 최신 소스를 가져와서 로컬 소스에 병합해주는 명령어
- 만약 clone 후, 다른 사람이 리모트 서버를 상태 갱신 했더라도 리모트 서버가 우리에게 변경 사항을 알려주지 않음.
- 우리가 직접 서버에 문의해야함.
- 단순히 가져오는 것이 아니라 가져와서 합친다의 개념. 브랜치끼리도 pull을 통해 합칠 수 있음.
- 현재 내 로컬 브랜치와 같은 이름을 가진 리모트 서버 브랜치가 타겟
git pull origin master
- origin 리모트 서버의 master 브랜치가 타겟
git fetch
- 리모트 서버의 최신 이력을 내 클라이언트로 가져오되 병합은 하지 않는 명령어
- 다른 사람들이 리모트 서버에 업데이트한 모든 내역을 받아올 수 있다. 내역을 보고 내 로컬에 있는 버전이 리모트 서버에 있는 버전보다 이전 버전이라면 pull명령어를 사용하여 내 컴퓨터의 소스 코드를 갱신하면 된다.
git status
- git 저장소 상태 체크
- 어떤 파일이 저장소 안에 있는지 커밋이 필요한 변경사항이 있는지 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등을 확인.
git add
- git이 관리할 파일 지정
- add를 안하면 commit시 git에 반영되지 않음.
- 저장소에 새 파일을 추가하는 것이 아니라 깃이 새 파일들을 지켜보게 함
- 파일을 추가하면 깃의 저장소 '스냅샷'에 포함된다.
git commit -m "message"
파일을 추가하거나 변경사항을 저장소에 기록하기 위해 커밋 메시지를 남기는 작업을 말함. 변경한 사람, 시간, 변경 내용등을 기록해 과거 변경 이력과 내용을 손쉽게 파악할 수 있음.
- 변경사항 최종 저장
- 저장소의 '스냅샷'을 찍기 위해 입력.
git remote ~.git
- 로컬 저장소와 remote 저장소(github/외부 서버) 연결
git remote -v
git branch cats
git merge
- 브랜치에서 작업을 끝내고 모든 협업자가 볼 수 있는 master 브랜치로 병합
git merge cats
- "cats" 브랜치에서 만든 모든 변경사항을 master로 추가