구글 트렌드를 이용하여 시간 흐름에 따른 관심도 변화를 봤을 때 SVN은 계속 하락, Git은 계속 증가
– branch
- hotfix : 중대한 버그 수정 - release : 마스터로 가거나 디벨롭으로 가거나
snapshot
데이터를 가져오거나 프로젝트를 저장할 때마다 그 시점의 파일에 대해서 스냅샷을 저장
변경되지 않은 파일은 다시 파일을 저장하지 않고 이전에 지정한 동일한 파일을 링크
checksum
데이터를 저장하기 전에 체크섬으 ㄹ구하고 이 체크섬을 통해 데이터를 관리
SHA-1 해쉬를 사용
*SHA-1 해쉬 : 16진수 문자 40개로 구성된 문자열, 파일의 내용 또는 디렉토리 구조를 기반으로 계산
파일 이름이 아닌 컨텐츠 해쉬값을 저장 -> 파일명이 변경되어도 내용이 동일하면 같은 해쉬
Sections
- checkout the project : 클론을 하면 레포지토리해서 워킹으로 - staging area : 내가 관리하고 있는 파일과 목록이 있음 - stage files : add 명령어가 들어감 - commit : 스냅샷을 떠서 저장
설정 파일 정보 확인
git에서는 책임성을 유지하기 위해 커밋한 사람의 이메일과 이름이 반드시 필요
설정정보는 config 파일에 저장되어 있음
*설정 파일 위치
1) 시스템 전역 경로
2) USER_HOME/.gitconfig
3) Working 디렉토리 경로 /XXX/.git/config
+ 참고 bask 화면 clear : ctrl + L
작업자 정보 입력
$ git config --global user.name coozplz
$ git config --global user.email coozplz@gmail.com
Init : 현재 디렉토리를 Git 레포지토리로 설정하는 명령
Init 후 반드시 해야할 ignore 설정 : 무시할 파일 설정, OS에서 생성하는 파일, Log 파일 등 관리할 필요가 없는 파일이 많다.
Status : 레포지토리의 상태를 보여주는 명령
Add: Working Directoty의 파일을 Staging Area로 옮기는 명령
Commit : Staging 영역에 있는 파일을 Repository에 저장
커밋메시지는 50자 이내로 해야 oneline옵션을 줄 경우 보기가 편함
Log : 저장소에 있는 Commit 이력을 조회하는 명령
Diff : 다른 커밋과 Working 디렉토리를 비교하는 명령
Branch : 브랜치를 생성, 수정, 삭제 등을 하는 명령
$ git branch 브랜치명 : 브랜치 만들기
$ git branch : 브랜치 목록 조회
$ git branch –d 브랜치명 : 브랜치 삭제
$ git branch –m 브랜치명 바꿀브랜치명 : 브랜치명 수정
Checkout 워킹 디렉토리의 소스를 특정 커밋으로 변경; 특정 파일을 특정 커밋이나 브랜치로 이동하는게 가능
Merge : 다른 두 개의 소스를 병합하는 명령
$ git checkout master
$ git merge develop
*머지가 항상 잘될까?
되는 경우 : 중복되는 위치를 변경하지 않은 경우
안되는 경우 : 같은 파일의 같은 부분의 내용이 변경된 경우
(예) develop에도 common.md 파일이 있고 master에도 common.md 파일이 있으면 git이 어느것이 사용자가 원하는 코드인지 알 수 없어 충돌이 일어남 -> 자동으로 병합할 수 없다는 메시지가 출력됨
(git merge 실습)
다른 브랜치에서 동시에 변경이 이루어졌을 경우 충돌이 일어남, 어떤 코드를 사용할지 선택해주어야 함
crome 웹스토어에서 stackedit에서 설치하면 기본 문서가 작성됨 (아래)
강의명 : 누구나 쉽게 배우는 Git(깃) & Github(깃허브)
수료일 : 2022. 08. 08.
강사 : Ohsung Kwon
한이음에서 새로운 프로젝트를 시작하며 git을 처음 사용해보기도 하고 vscode에서 git을 사용하는데에 어려움을 느껴 관련 강의를 찾아 듣게 되었다. 정보처리기사를 공부하며 알게되었던 git 구조와 git 명령어를 실제로 어디서 어떻게 사용하는지 알 수 있어 좋았고, vscode에서는 어떻게 적용해야할지 생각해보며 강의를 들었다. github 레포지토리를 만들어 코드공부할 때마다 꾸준히 올리고 git 사용방법을 익혀야겠다고 생각했다.