2025/05/02 7

[Git & Github] 20. 사용자 지정 Git Alias 작성하기 -完-

Important ● 전역 설정 파일Nice To Have ● 커스텀 명령어 작성 깃 저장소는 각각의 로컬 설정 파일(config)이 존재하고 한 사용자가 생성한 저장소에 모두 적용되는 전역 설정 파일(.gitconfig)이 존재한다.전역 설정 파일전역 설정 파일도 이전 로컬 설정 파일과 같이 텍스트 에디터에서 직접 추가가 가능하고 CLI 환경에서도 조작이 가능하다. 텍스트 에디터 [alias] 밑으로 별칭 = 명령어를 임의로 설정하여 사용할 수 있다.commit -m "message"와 같이 인자가 있는 경우도 똑같이 명령어 입력에 인자를 입력해주면 된다. 위 .gitconfig 파일에서 별칭으로 등록한 s 명령어에 대해 잘 작동하는 것을 확인할 수 있다. CLIgit config --gl..

[Git & Github] 19-1. dangling commit 이란?

dangling commit 어떤 브랜치나 태그 등에서 더 이상 참조되지 않는 커밋을 말한다.쉽게 말하면, Git 저장소 안에는 존재하지만 어디에서도 가리키고 있지 않기 때문에 보이지 않는 커밋이다. 🔍 왜 생기는 걸까? git commit 후, rebase나 reset으로 HEAD를 되돌렸을 때git rebase -i로 커밋을 삭제(drop) 했을 때브랜치를 삭제했는데, 해당 브랜치에만 있던 커밋이 다른 브랜치와 공유되지 않았을 때이런 경우 기존 커밋은 Git 내부에는 아직 존재하지만, HEAD도 브랜치도 더 이상 그 커밋을 가리키지 않게 된다.→ 즉, dangling 상태 🕵️‍♀️ 확인 방법 git fsck --lost-found 이 명령은 Git 저장소 내에서 dangling commit ..

Interactive rebase에서 최초 커밋을 수정할 수 없는가?

Interactive rebase에서 최초 커밋을 수정할 수 없는가?[Git & Github 실무 활용 완벽 가이드] 인터넷 강의를 듣던 중 Interactive rebase를 실습할 때 저장소의 최초 커밋은 텍스트 에디터에서 확인하지 못하는 것을 확인하였다.git rebase -i 명령은 지정한 커밋의 다음 커밋부터를 대상으로 interactive list를 보여주기 때문이다. HEAD~N 항목 지정을 통해 interactive list에 최초 커밋을 조회할 수 있도록 명령어를 입력했을땐,fatal : invalid upstream 'HEAD~N' 에러가 발생하였다.항목 지정을 하여도 git은 여전히 해당 항목의 이전 커밋을 참조하려고 하기 때문이다. 결국, 최초 커밋은 참조하고 있는 부모 커밋이 없..

Git/git 공부 2025.05.02

[Git & Github] 19. Reflog의 힘 - '사라진' 작업 복구하기

Important ● reflog 파일 탐색 ● reflog 명령어 ● 잃어버린 커밋 복구 ● 리베이스 되돌리기Nice To Have ● 시간 기반 reflog 수식자 reflog는 reference log의 약어이다.커밋을 잃어버리거나 rebase를 하지 말아야 할 때 rebase를 하는 등 문제를 되돌리고 싶을 때 사용한다. reflog는 지역적으로 동작한다. 내 컴퓨터의 참조목록에 대한 변경사항만을 저장하고 기록한다.또한 로그가 영구적으로 남지 않고 기본 설정으로는 90일 정도 지나면 삭제된다.git reflogshow, expire, delete, exists 총 4가지의 하위 명령어와 같이 사용하지만 show 말고는 별로 사용되지 않는다.git reflog show ..

[Git & Github] 18-1. 해시 함수

해시 함수해시 함수는 입력값의 크기와 무관하게 항상 고정된 길이의 출력값을 생성하는 함수이다.예를 들어 한 글자만 입력해도, 수백 MB짜리 파일을 입력해도 출력값은 항상 일정한 길이이다. Git에서는 이 해시 값을 객체로 식별하는 ID로 사용한다.이 ID는 객체의 "내용"에서 직접 생성되기 때문에, 내용이 바뀌면 ID도 바뀐다.이 원리를 내용 주소 지정(content-addressed storage)이라고 부른다.Git이 사용하는 해시 함수 : SHA-1Git은 오랫동안 SHA-1(Secure Hash Algorithm 1) 해시 함수를 사용해 왔다.출력 길이 : 40자리의 16진수 문자열 (160비트)예시 : f5a1c3e0b1b3f95fa3dfb77deee3a6d1c84e4a59 동일한 입력값에 대해..

[Git & Github] 18. Git의 이면 - 해싱(Hashing)과 객체

Important ● 로컬 설정 파일Nice To Have ● refs 디렉토리 ● HEAD ● 해싱 함수의 기초 ● 깃 오브젝트 로컬 설정 파일 깃 설정은 글로벌과 로컬 두 가지 방식으로 설정 할 수 있다.글로벌로 설정할 경우 모든 깃 repository에 동작하는 설정을 할 수 있으며로컬로 설정할 경우 설정한 해당 repository에서만 적용되는 설정을 적용할 수 있다. 해당 챕터에서는 로컬에서 간단한 설정 조작만 맛 볼 예정이다.로컬 설정은 config 파일을 직접 수정하거나 명령어를 통해서 깃의 설정을 바꿀 수 있다. config 파일 수정 CLI 환경에서 config 수정 refs/이 폴더 안에는 heads, tags 등의 하위 폴더가 있다.heads 폴더는 저장..

[Git & Github] 17. 히스토리상의 중요한 순간에 표시하기

Important ● git tag 이해하기 ● 태그 보기 ● 태그 생성 및 푸시Nice To Have ● Semantic versioning ● 태그 비교/삭제/옮기기 깃 태그는 특정 커밋에 추가하는 일종의 라벨이다. 주로 릴리즈 버전을 표시하는 용도로 사용된다.커밋이 추가되면 같이 이동하는 브랜치 참조와 다르게 처음 지정된 커밋을 계속 참조한다. * 태그의 두 종류 *일반 태그(lightweight) : 특정 순간에 이름을 붙인다.주석 태그(annotated) : 태그 메시지, 생성자 이름, 이메일, 날짜 등을 포함한다. 큰 프로젝트에서는 주석 태그를 선호하는 편이다. 시멘틱 버저닝 (Semantic versioning)버전 번호를 매기는 일종의 규칙이다.버전명은 숫자 세..