Git(29)
-
[Git] git commit 명령의 동작 원리
1. 커밋 평범한 커밋과 상태 확인 git-test $ git commit -m "add cat.txt" git-test $ git log git-test $ git status 위 상태에 대한 워킹트리, 스테이지, 커밋의 내용을 그림으로 예상하면 다음과 같을 것입니다. 위 그림은 잘못된 그림입니다. 커밋 상태 확인2 git-test $ ls -a .git/objects # .git/objects 변환 확인 git-test $ ls -a .git/objects/b1 # b190b6 오브젝트 존재 확인 git-test $ git show b190b6 # b190b6 오브젝트의 정체는 커밋 객체 텅빈 스테이지 확인 git-test $ git ls-files --stage #스테이지가 비어있지 않다 git-t..
2022.04.22 -
[Git] git add 명령의 동작 원리
1. git init 다시 보기 git init 명령 수행시 변경사항 확인 $ mkdir git-test $ cd git-test $ git init $ ls -al $ ls -al .git/ git init 명령어를 수행하면 현재 폴더 아래에 [.git] 폴더가 생성됩니다. 이 폴더가 로컬저장소입니다. 2. git add와 git status 다시 보기 git hash-object 일반 파일의 체크섬을 확인할 때 사용됨 git show 해당 체크섬을 가진 객체의 내용을 표시함 git ls-files --stage 스테이지 파일의 내용을 표시함 스테이지 파일은 git add 명령을 통해 생성되는데 .git/index 파일이 스테이지 파일임 파일 생성 및 워킹트리 상태 확인 git-test $ echo "..
2022.04.22 -
[Git] CLI로 rebase 수행
1. rebase 사용하기 3-way 병합 사용시 병합 커밋이 생성되기 때문에 이력이 지저분해질 수 있습니다. 이와 같은 경우 rebase를 사용할 수 있습니다. rebase는 베이스 커밋을 재배치 하는 기능입니다. rebase의 원리 1. HEAD와 대상 브랜치의 공통 조상을 탐색 (아래 그림의 C2) 2. 공통 조상 이후에 생성한 커밋들(C4, C5 커밋)을 대상 브랜치 뒤로 재배치를 수행 reset --hard 및 rebase 시도 (feature1) $ git reset --hard HEAD~ # 현재 브랜치를 한 단계 되돌림 (feature1) $ git log --oneline --graph --all -n5 # 로그 확인 (feature1) $ git rebase main # HEAD 브랜치..
2022.04.22 -
[Git] CLI로 3-way 병합하기
1. 긴급한 버그 처리 시나리오 1. (옵션) 오류가 없는 버전(주로 Tag가 있는 커밋)으로 롤백 2. [main] 브랜치로부터 [hotfix] 브랜치 생성 3. 빠르게 소스 코드 수정 / 테스트 완료 4. [main] 브랜치로 병합(Fast-forward) 및 배포 5. 개발 중인 브랜치에도 병합 (충돌 발생 가능성이 높음) 새로운 브랜치 및 커밋 생성 ch06_git-playground $ git checkout main # main 브랜치로 이동 (main) ch06_git-playground $ git checkout -b feature1 # feature1 브랜치 생성 및 이동 (feature1) ch06_git-playground $ echo "기능 1 추가" >> file1.txt # 파일..
2022.04.22 -
[Git] CLI로 checkout 하기
1. CLI를 이용한 브랜치 체크아웃 및 새 커밋 생성 브랜치 만들기 (main) $ git checkout feat/c # 브랜치 체크아웃 (feat/c) $ git branch # 현재 브랜치 확인 (feat/c) $ git log --oneline -n5 # HEAD 변경 확인 (feat/c) $ cat ch06_git-playground/file1.txt # 파일 내용 확인 (feat/c) $ echo "third - my branch" >> ch06_git-playground/file1.txt # 파일에 내용 추가 (feat/c) $ cat ch06_git-playground/file1.txt # 파일 내용 확인 (feat/c) $ git status # 스테이지 상태 확인 (feat/c) $ ..
2022.04.22 -
[Git] CLI로 브랜치 생성하기
1. branch 되돌아보기 커밋을 수행하면 커밋 객체가 생성됩니다. 커밋 객체에는 부모 커밋에 대한 참조와 실제 커밋을 구성하는 파일 객체가 들어 있습니다. 브랜치는 논리적으로는 어떤 커밋과 그 조상들을 묶어서 뜻하지만, 사실은 단순히 커밋 객체 하나를 가리킬 뿐입니다. 브랜치의 사용 시기 사용 시기 설명 새로운 기능 추가 가장 대표적으로 브랜치를 사용하는 경우입니다. [main] 브랜치에는 정상적으로 동작하는 안정적인 버전의 프로젝트가 저장되어 있기 때문에 새로운 기능을 추가할 때는 [main] 브랜치의 최신 커밋으로부터 브랜치를 생성해서 개발합니다. 이때는 개발, 코드 리뷰, 테스트까지 모두 완료해서 이상이 없으면 [main] 브랜치로 병합합니다. 버그 수정 오류와 버그는 놀랍지 않게도 항상 발생합..
2022.04.22