branch
독립적인 작업을 가능하게 하는 작업 단위.
다른 브랜치들 끼리 영향을 끼치지 않아서 여러 작업자들이 동시적으로 작업이 가능하게 됨.
main(혹은 master) branch
모든 작업의 상위 브랜치.
Staging area
커밋 하기 전 $ git add 명령어로 추가된 파일들이 있는 스테이징 영역
Repository
스테이징한 작업물이 커밋되면 저장되는 저장소로 로컬(PC)과 원격(GitHub)이 있다.
Git 커맨드
원격 저장소를 로컬 저장소로 복제하기
로컬 저장소의 변경 사항에 대한 이력을 기록하는 것
커밋된 로컬 작업물을 원격 저장소로 업로드하기
변경점이 있는 원격 저장소의 작업물을 로컬 저장소로 가져오고 변경사항 병합하기
원격에서 로컬로 병합없이 가져오기만 함 (확인용)
사용할 브랜치를 지정하는 것
Merge
2개의 브랜치를 하나로 합치는 것
fast-forward
메인 브랜치 (버그있는 기존 작업물, Parent)
픽스 브랜치 (메인 브랜치에서 디버깅이 완료된 파생 브랜치, Child)
픽스 브랜치가 메인 브랜치를 "포함"하면서 최신 변경점이 있는 상태이므로 최신인 픽스 브랜치의 변경점으로 메인 브랜치를 빨리감아 병합하는 것이 fase-forward
rebase
브랜치의 base인 부모 브랜치를 변경하는 것
많은 변경점이 있을 경우 부모 브랜치를 변경하여 많은 변경점을 줄이는데 의의가 있다.
이후 fast-forward 방식으로 병합하는 등 작업을 진행한다.
Git Bash
Git의 쉘(sh) 프로그램으로 리눅스 커맨드 사용 가능.
Git LFS
Git의 repository 용량에는 제한이 없으나 파일 당 100mb라는 제한 사항이 있다.
대용량 파일을 push/pull하게 해주는 Git Extension.
실제 대용량 파일을 Remote 서버에 저장하고 이에 대한 포인터 파일을 만들어 관리함.
Scalar
많은 시간이 소요되는 대용량 repository에서 Git 명령 성능을 최대화 하는 .Net Core Application.
Use Git from Bash only
Git bash에서만 Git 명령어 수행이 가능한 옵션
Git from the Command line and also from 3rd party software
Git을 윈도우 환경변수에 등록하여 CMD로 사용가능하게 하는 옵션
Use Git and optional Unix tools from the Command Prompt
Git과 별도의 Unix 툴 둘 다 환경변수에 추가하는 옵션
"find"나 "sort"같은 윈도우 도구가 재정의되므로 위험 사항을 이해하는 사람만 수행하기를 권장
Use bundled OpenSSH
깃 OpenSSH 사용
Use external OpenSSH
외부 OpenSSH 사용
Use the OpenSSL library
GitHub과 같은 공개 repo에만 접근하거나 자체 인증서를 관리하지 않는 경우 OpenSSL 라이브러리를 사용.
Use the native Windows Secure Channel library
회사 내부 관리 인증서가 있는 경우 Windows 인증서 저장소를 사용하여 검증.
윈도우(/r/n)와 유닉스(/n)의 개행 변환 여부
체크아웃시 윈도우 개행 / 커밋시 유닉스 개행으로 변환.
체크아웃시 변환 없음 / 커밋시 유닉스 개행으로 변환
둘 다 변환 없음
Git Bash의 기본 타미널(MinTTY)사용
윈도우의 CMD를 사용
pull에 대한 디폴트값
동작이 수행이 가능하면 fast-forward로 그렇지 않으면 병합 커밋을 생성함
현재 브랜치를 패치된 브랜치로 Rebase함.
리베이스할 로컬 커밋이 없으면 fast-forward로 동작
pull 동작이 오직 fast-forward로 설정되며 불가능하다면 실패함.
ssh를 사용하여 remote repo에 접근할 때 http 프로토콜을 사용하는 경우는 매번 인증정보를 입력해야하는데 그 부분에 대한 관리를 제공함.
GitHub 계정을 생성한 후 bash를 켜고 깃허브명과 깃허브 이메일을 등록한다
git config --list
깃 환경설정 정보에서 자신의 이름과 계정을 확인할 수 있다.
저장소 용량에는 제한이 없으나 파일 당 사이즈를 100Mb로 제한하고 있다.
로컬 저장소로 경로를 설정한다.
git init
git 초기화
git lfs install
lfs 설치
git lfs track "filename"
로컬 repo에서 Git LFS와 자동으로 연결하려는 파일을 등록하는 과정이다.
특정 확장자를 전체 관리 상태로 만들려면 filename에 *.확장자 를 사용하면 된다.
이로 인해 repository에 .gitattributes 파일이 생성된다.
git add "path/filename"
업로드하고자 하는 실제 파일을 스테이징 영역으로 이동시킨다.
애트리뷰트 파일을 이용하고 싶으면 git add .gitattributes로 등록 후 해당 파일을 프로젝트 최상위 디렉토리에 위치시킨다.
git commit -m "Description"
스테이징 영역에 있는 파일들을 모두 저장소로 커밋시킨다.
git push
GitHub에 push한다.
SSH(Secure Shell Protocol)를 사용하여 GitHub.com의 저장소에 액세스하고 데이터를 사용합니다. SSH를 통해 연결할 때 로컬 시스템의 개인 키 파일을 사용하여 인증합니다.
SSH 키를 사용하면 방문할 때마다 사용자 이름과 개인 액세스 토큰을 제공하지 않고도 GitHub에 연결할 수 있습니다. SSH 키를 사용하여 커밋에 서명할 수도 있습니다.
github docs 일부
eval $(ssh-agent)
인증 에이전트와 최초로 1회 연결ssh-add -l
현재 등록된 key가 없는 것을 확인
ssh-keygen -t rsa -C "이메일계정"
ssh key 생성
비밀번호가 필요한 사람은 설명에 따라 두 번 입력하면 된다.
쉘에 표시된 경로에서 id_rsa와 id_rsa.pub가 생성되었음을 확인한다.
id_rsa.pub를 노트패드로 열어 key값을 복사한다.
ssh-add ~/.ssh/keyFilename
ssh key 등록
ssh-add -l
등록된 key 재확인
자신의 GitHub에 새로운 SSH key를 등록한다.
GitHub > Settings > SSH and GPG keys > New SSH key
등록할 key값은 복사했던 id_rsa.pub 파일이다.
위는 등록이 완료된 모습이다.
다시 |2|를 수행하여 업로드를 완료한다.