git이란?
분산 버전관리 시스템
주로 여려명의 개발자가 하나의 소프트웨어 개발 프로젝트에 참여할 때, 소스코드를 관리하는데 주로 사용
장점:
1. 인터넷이 연결되지 않은 곳에서도 개발 진행 가능
2. 중앙저장소가 삭제되어도 원상 복구 가증
3. 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능
공식 문서에 나온 특징
- Distributed development
- 전체 개발 이력을 각 개발자의 로컬로 복사 제공하고 변경된 이력을 다시 하나의 저장소로 복사
- 이러한 변경은 추가개발지점을 가져와 로컬 개발 지점과 동일하게 병합가능
- Strong support for non-linear development
- 신속하고 편리한 branch 및 merge 지원, 비선형 개발 이력을 시각화하고 탐색 할 수 잇는 강력한 도구를 제공
- Efficient handling of large projects
- Git은 매우 빠르고, 대형프로젝트나 이력이 많은 작업에 매우 합리적
- Cryptographic authentication of history
- Git 이력은 성공한 개발이력의 commit에 의해 개정명으로 저장
- commit 을 모르면 예전 버전으로 변경하는 것이 불가능
- commit을 암호화 할 수 있음
- Toolkit design
- Git은 손쉬운 사용과 쉬운 스크립팅을 위한 도구를 제공
추가질문
1. git fetch와 git pull의 차이
- git fetch : 로컬 git에서 원격 저장소에서 최신 메타데이터 정보를 확인하라는 명령을 전달 -- 변경사항이 있는지 확인만하고 가져오진 않음
- git pull : 원격 저장소에서 변경된 메타데이터 정보를 확인 + 최신 데이터를 복사하여 로컬 Git으로 가져옴
- local branch와 remote branch - git 의 branch란 무엇인가?
- local 저장소 : 내 컴퓨터
- remote 저장소 : 서버에 있는 것으로 local에서 push해 줘야만 변경사항이 저장
- git branch란? : Git을 독립적으로 사용하기 위한 개념
- git의 3가지 영역
3-1 Working directory : 현재 내가 작업하고 있는 프로젝트의 디렉토리
3-2 Staging Area : 커밋을 하기 위해 git add 로 추가한 파일들이 모여있는 공간3-2-1 Staging Area의 장점
1) 일부분만 commit 할 수 있다
2) 충돌이 발생했을 때 해결을 위한 작업 데이터를 staging Area 저장해놓음
3) 여러 변경 사항을 병렬로 작업할 수 있으므로 서로 다른 작업 간에 전환을 더 쉽게 수행할 수 있음3-3 Repository : commit들이 모여있는 장소
4. commit 이 무슨 뜻인가요? : 특정 저장소의 코드베이스에 대한 변경사항을 기록한 것 (commit 식별자 - 코드베이스) 로 관리되어있음
5. git hook이란? : 특정 이벤트가 발생했을때 자동으로 특정 스크립트가 실행되도록 하는 것
종류 - 클라이언트 Hook(commit, merge 등), 서버 Hook(push 등)
참고 : Git-scm
6. git conflict 해결 방법은? :
git status를 통해 충돌이 일어난 파일을 찾음
수정 후 다시 commit
7. git을 활용한 project에서 사용한 convention### git commit -m"컨벤션 네이밍 컨벤션 ### feat : 새로운 기능에 대한 커밋 ### fix : 버그 수정에 대한 커밋 ### build : 빌드 관련 파일 수정에 대한 커밋 ### chore : 그 외 자잘한 수정에 대한 커밋 ### ci : CI관련 설정 수정에 대한 커밋 docs : 문서 수정에 대한 커밋 ### style : 코드 스타일 혹은 포맷 등에 관한 커밋 ### refactor : 코드 리팩토링에 대한 커밋 ### test : 테스트 코드 수정에 대한 커밋 "
git 함수에 대한 간단한 내용?
git init : 로컬저장소로 만들 디렉토리로 이동한 후 로컬 저장소 생성
git remote -v : 현재 연결된 remote 저장소 확인
git remote add <저장소 이름> <저장소 주소> : 자신의 원격 저장소 추가
(ex. git remote add origin http://github.com/[저장소 주소])
git clone <저장소 주소> : 주소에 해당하는 저장소를 가져와서 사용
git status : 현재 stage area의 상태를 확인
git add <파일 이름> : 해당 파일을 커밋 대상에 추가
git commit -a -m "커밋 메시지" : 커밋 대상에 추가된 파일과 수정된 파일을 커밋함
(수정파일을 제외하려면 -a 를 빼고 쓰면됨)
git pull <저장소 이름> : 원격 저장소의 모든 데이터를 가져와서 원격으로 최신화함
git push <저장소 이름> <브랜치 이름> : 원격 저장소(브랜치)에 데이터를 넣음
git diff : 커밋된 파일과 modified 파일 사이의 변경사항을 확인
git checkout -b <브랜치 이름> : 브랜치 이름으로 새로운 브랜치를 만들고 해당 브랜치로 Head 포인터 이동
git checkout <브랜치 이름> : 해당 브랜치로 Head 포인터 이동
git branch <브랜치 이름> : 브랜치 생성
git branch -d <브랜치 이름> : 브랜치 삭제
git 과 github
github : git을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스