Git | GitLab 52

[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

[GitLab] Merge Request - Squash 기본 활성화하기

개요2024.08.30-[Git] Squash - 커밋 압축하기에서 여러 개의 작은 커밋을 하나의 커밋으로 압축하는 Squash를 알아보았다.이번 글에서는 GitLab에서 Merge Request를 머지할 때 Squash 기능을 사용하는 방법을 적어둔다.  Merge Request - SquashGitLab에서 Merge Request를 할 때 Squash commits 체크박스를 체크하면 머지할 떄 압축된 커밋 하나와 머지 커밋 하나, 총 두 개의 커밋이 target branch에 추가된다.   기본 옵션 설정레포지터리 설정에서 Merge Request를 생성할 때의 Squash 관련 기본값을 설정할 수 있다. 설정할 수 있는 기본값은 아래와 같다.Do now allow : Squash 미허용. 체크 ..

Git | GitLab 2024.09.19

[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

[GitLab] 브랜치/TAG 간 비교

개요저장소 내에서 버전 관리를 하면서 태그나 브랜치 간에 차이점을 비교하려고 한다. 예로 들어 v0.4과 v0.5 간의 차이가 발생하는 commit 목록을 확인하고 싶다.확인하는 방법에는 여러 가지가 존재하겠지만, 이 글에서는 GitLab 웹에서 확인하는 방법을 적어두려고 한다.  Compare revisionsGitLab에서느 Compare revisions(Git 리비전 비교) 기능을 사용하여 저장소 내 브랜치나 태그를 기준으로 비교할 수 있다.GitLab 공식 레포지터리를 예로 들어 최신 버전과 직전 버전을 비교해보자. 1. 레포지터리 메뉴 > Code > Compare revisions 클릭GitLab 서버 버전에 따라 메뉴 접근 경로는 달라질 수 있는 것 같다. Code가 아니라 Reposito..

Git | GitLab 2024.06.05

[GitLab] API로 원격 저장소 파일 읽기

개요 GitLab 저장소에 저장되어 있는 파일을 클론하지 않고 내용을 확인하고 싶다. 웹 요청이나 API를 통해 확인할 수 있을 것 같은데, 이 글에서는 GitLab API를 이용해 레포지터리에 저장된 파일 정보를 확인해본다. 원격지 파일 정보 확인 원격 저장소에 저장된 파일에 대한 정보는 다음의 url로 요청할 수 있다. 요청 시 원격지 프로젝트의 아이디 값과 확인할 파일의 경로를 지정해주어야 하는데, 파일에 경로에는 branch 정보도 포함되어야 한다. branch 정보는 ref 속성으로 지정한다. GET /projects/:id/repository/files/:file_path # 예시 curl --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api..

Git | GitLab 2024.05.09

[GitLab] API로 MR 업데이트하기

개요 2024.01.05-[GitLab] git cli로 Merge Request 생성에서 Git Push와 함께 MR 생성을 자동화할 수 있도록 CLI로 작업을 해봤는데, 이후 동작에서 이미 생성되어 있는 MR 정보를 갱신해야 할 필요가 생겼다. GitLab API를 이용해 특정 프로젝트의 MR을 찾아 업데이트하는 방법을 정리한다. 예시로 파이썬으로 구현해둔다. MR 업데이트 공식 문서에 의하면 MR을 업데이트할 때는 아래와 같은 URL에 Put 요청을 하면 된다. project의 id와 mr의 id는 필수값이고, 업데이트할 값에 해당하는 labels, assignee_id, title, description 등등의 여러 값은 필요에 맞게 전달하면 된다. PUT /projects/:id/merge_re..

Git | GitLab 2024.05.03