Git 34

[Git] Shallow Clone - 저장소의 일부 이력만 받아오기

개요간혹 몇 년에 걸쳐 유지되어 용량이 엄청 커진 Git 저장소를 클론 할 때가 있는데, 전송해야 하는 데이터의 양이 너무 많아 시간이 아주 오래 걸리거나 중간에 실패하는 경우가 발생할 수 있다.만약 저장소의 전체 이력이 필요하지 않다면 저장소의 일부 이력만 받아오는 Shallow Clone이 방법이 될 수 있다. 이번 글에서는 git clone 또는 fetch 시 일부 이력만 받아오는 방법을 적어둔다.  depthgit clone 또는 git fetch 명령어를 사용할 때 --depth 옵션을 통해 받아올 이력, 즉 커밋의 수를 지정할 수 있다.git clone --depth=Ngit fetch --depth=N최신 이력부터 지정한 수의 커밋을 받아오게 된다. 즉, depth를 1로 주면 최신 1개의..

Git | GitLab 2024.12.05

[Git] stash - 특정 파일만 임시 저장

개요최근 Git 로컬 레포지터리에서 수정 작업을 많이 하고 있는데, 수정 내용을 간단하게 저장하고 다시 적용할 수 있는 stash를 적극적으로 활용하고 있다. git stash 명령은 워킹 디렉터리에서 수정이 발생한 모든 내용을 임시로 저장하는데, 특정 파일만 저장할 때도 많아서 방법을 적어둔다.  git stash pushgit stash [push [-p|--patch] [-S|--staged] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [-m|--message ] [--pathspec-from-file= [--pathspec-file-nul]] ..

Git | GitLab 2024.11.12

[Git] Squash - 커밋 압축하기

개요Git으로 프로젝트를 관리하는 경우, commit 이력을 깔끔하게 관리하는 것은 프로젝트의 이력 파악에 도움을 준다. 다만 커밋을 수행한 직후에 사소한 오타 등을 수정하기 위해 다시 커밋을 수행하는 상황에 의해 커밋 이력이 난잡해질 수도 있다. 이런 경우 git squash라는 기능을 이용하여 커밋을 압축하는 방식으로 커밋 이력을 정리할 수 있다.이번 글에서는 git squash를 사용하는 방법을 적어둔다.  Squash사전적으로 squash란 '짓누르다'라는 의미로, git에서는 여러 커밋을 하나의 커밋으로 짓눌러 합치는 기능을 제공한다. 불필요하게 작게 나뉜 커밋을 유의미한 변경 사항을 담은 커밋으로 압축할 수 있게 한다.로컬 레포지터리에서 개발한 내용을 원격 저장소로 올리기 전에 squash를 ..

Git | GitLab 2024.09.13

[Git] git tag - 특정 태그로 이동

개요최근 소스 레포지터리의 특정 태그 버전으로 이동해야 하는 일이 있었는데, 방법을 잘 모르고 있어서 적어둔다.   Tag무언가를 표시할 때 사용하는 태그는 Git에서도 중요한 특정 커밋을 표시하기 위해서 사용한다. 즉, 커밋을 가리키는 링크와 비슷한데, 보통 v1.0.0, v1.1.0 등으로 릴리즈를 할 때 사용한다.태그에는 Lightweight, Annotated라는 두 가지 종류가 존재한다. Lightweight 태그는 단순 특정 커밋에 대한 포인터에 해당하는 반면, Annotated 태그는 태그 생성자의 이름, 이메일, 태그 생성일, 태그 매시지 등을 Git 데이터베이스에 저장한다. 일반적으로 태그를 생성할 때는 Annotated 태그로 생성하여 사용한다.   태그 생성태그는 git tag 명령으..

Git | GitLab 2024.09.02

[Git] 특정 커밋만 푸시

개요특정 커밋만 브랜치에 적용할 때는 2023.04.21-[Git] cherry-pick - 특정 커밋 반영 명령어를 사용할 수 있는데, cherry-pick하는 것이 아니라 commit을 push 하는 단계에서 push 할 커밋만 지정할 수 있으면 한다.방법을 적어둔다.  방법 일단 git push를 사용할 때 아래와 같은 명령어를 사용한다.git push :# 예시git push origin 8b43c99:maingit push origin 8b43c99:refs/heads/commit_push다만 제한사항이 좀 있는 것 같다. 먼저 push 명렁은 기본적으로 지정한 커밋을 포함한 모든 커밋을 Push 하기 때문에 하나의 커밋만을 push 하기 위해서는 push 할 커밋이 첫 번째 커밋이 되어야 한..

Git | GitLab 2024.07.02

[Git] 작업 디렉터리 지정하여 명령어 수행

개요Git 작업은 보통 작업 디렉터리 내에서 이루어진다. 작업 디렉터리 밖에서 git 명령어를 수행하면 fatal 에러가 발생하면서 실패한다.다만 진행하는 프로젝트가 여러 저장소로 구성되어 있다면, Git 작업을 할 때 저장소를 이동하는 것에 번거로움을 느낄 수 있다.이 글에서는 작업 디렉터리를 지정해 Git 명령어를 수행하는 방법을 적어둔다.   -C 옵션현재 작업 디렉터리 대신 path에서 실행할 때에는 -C 옵션에 경로를 지정한다. -C 옵션에 값을 여러 개 지정하는 경우, 각 -C 옵션은 뒤이어 오는 -C 옵션의 기준 경로가 된다. 즉, 상대적으로 해석된다.git -C # 예시git -C branch_test/ status  참고 문서Git - git-help Documentation (git-..

Git | GitLab 2024.06.28

[Git] 특정 브랜치만 클론하기

개요 Git 레포지터리를 로컬로 클론 하면 기본적으로 초기 브랜치를 체크아웃한다. 클론 시 실제로 사용할 브랜치로 체크아웃하는 방법을 적어둔다. 방법 clone 명령어에 -b, --branch 옵션으로 클론할 브랜치를 지정한다. git clone -b # -b, --branch : 새로 생성되는 HEAD가 레포지터리의 HEAD 대신 name 브랜치를 가리킨다. # 베어 저장소가 아니면 해당 브랜치가 체크아웃되는 브랜치이다. 예시 다음과 같이 main 브랜치와, b20220627 브랜치 등이 존재하는 레포지터리가 존재하고, main 브랜치가 아닌 b202220627 브랜치에서 작업해야 한다고 가정하자. 이 경우 다음과 같이 브랜치를 지정해 클론할 수 있다. git clone -b b20220627 http..

Git | GitLab 2023.10.05

[Git] sparsecheckout - 하위 디렉터리만 클론

sparsecheckout Git을 사용하다보면 레포지터리의 내용 전체가 아니라 일부 경로만 필요한 경우가 종종 있다. 이때 sparsecheckout 기능을 사용하면 필요한 경로만 관리할 수 있다. 비교적 최신 버전의 git에서 사용할 수 있다. 사용법 보통 신규 디렉터리를 만들어 git init 후 사용하는 것 같은데, 이 글에서는 checkout 없이 git을 클론 하여 사용해 본다. 예시로 사진의 Algorithm 레포지터리의 백준 디렉터리만 로컬 저장소고 가져와보자. 1. checkout 없이 클론 git clone -n # 예시 git clone -n https://github.com/jinyuo/Algorithm.git 로컬 저장소에 git 설정 파일 경로만 있고 내용물은 없는 것을 확인할 ..

Git | GitLab 2023.08.21

[Git] git clone 옵션

git clone git 레포지터리를 클론 할 때 크게 네 가지 옵션을 주어 클론 하는 것 같다. git clone git clone --no-checkout git clone --bare git clone --mirror git clone 명령을 사용할 때 -no-checkout 옵션을 사용하게 됐는데, 공식 문서를 봐도 이해가 잘 가지 않아서 정리해 본다. git clone 옵션 별 동작 방식 git clone 옵션 없이 clone을 수행하면 각 브랜치에 대한 remote-tracking 브랜치를 만들고, 초기 브랜치(master)를 만들고 checkout 한다. 즉, working tree에 소스를 다운로드한다. git clone --no-checkout checkout을 수행하는 부분을 제외하고 ..

Git | GitLab 2023.08.18

[Git] 원격 저장소 주소 변경

개요 회사의 전사 GitLab 주소가 변경되어 로컬 저장소에서 원격 저장소의 주소를 변경해야 한다. 방법을 적어둔다. 원격 저장소 정보 확인 git remote -v로 저장소 이름과 주소를 확인할 수 있다. 등록된 주소가 여러 개라면 등록된 저장소를 전부 출력한다. git remote -v 원격 저장소 주소 확인 원격 저장소의 URL을 확인할 때는 remote get-url 명령을 사용할 수 있다. git remote get-url remote set-url 원격 저장소의 URL을 변경한다. 을 지정하지 않으면 첫 번째 URL을 로 변경한다. --add 옵션을 사용하면 새 URL을 추가한다. usage: git remote set-url [--push] [] or: git remote set-url --..

Git | GitLab 2023.08.07
1 2 3 4