Git 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

[Git] 특정 파일만 특정 버전으로 되돌리기

개요 원인은 잘 모르겠지만…… 서버에서 작업한 파일의 내용만 삭제되어 있는 것을 확인했다. 로컬 레포지터리에 여러 파일이 있지만 다른 파일은 최신 상태로 두고, 이상이 있는 파일만 특정 버전 상태로 되돌리고 싶다. 명령어 checkout 명령을 사용하면 원하는 파일만 원하는 버전으로 돌릴 수 있다. git checkout COMMIT_HASH FILE # 예시 git checkout 917b9e21cb3b6beb402427d49598d1dcd553bc87 ./src/test.py 참고 문서 https://computer-science-student.tistory.com/490 https://suwoni-codelab.com/git/2018/04/25/Git-checkout/

Git | GitLab 2023.06.30

[Git] stash - 작업 임시 저장

stash 로컬 레포지터리에 작업하던 중 다른 작업이 들어와 잠시 브랜치를 변경해야 할 일이 있다고 하자. 만약 아직 완료되지 않은 작업을 commit 하기 껄끄럽고, 다시 돌아와 작업을 이어나가고 싶다면 git stash 명령을 사용할 수 있다. stash 명령은 워킹 디렉터리에서 수정한 파일들에 대해서만 저장한다. 다시 말해 Modified면서 Tracked 상태인 파일과 staging area에 있는 파일만 Stash라는 공간에 저장한다. stash 하기 아래와 같이 하나의 파일은 Staging 상태고, 다른 파일은 Modified 상태인 저장소가 있다고 하자. 아직 commit할 수 있을 정도로 작업이 되지 않았기 때문에 stash나 stash save 명령어로 저장한다. git stash git..

Git | GitLab 2023.05.26

[Git] cherry-pick - fatal: bad revision

현상 2023.05.08 - [Git] cherry-pick - 특정 커밋 반영에서 살펴본 방법으로 다른 브랜치에 적용된 commit을 가져오려고 했더니 아래와 같은 에러가 발생했다. 해결 방법을 확인해 본다. 원인 로컬 레포지터리에서 가져올 커밋을 찾지 못하는 것이 원인이다. 지정한 commit hash 값에 오타가 있거나 레포지터리가 최신화되지 않았을 때 발생할 수 있다. 내 경우에는 후자가 원인이었다. 해결 방법 git pull을 할 때도 fetch를 먼저 하는 것과 동일하게, cherry-pick을 할 때도 fetch를 수행하면 된다. git fetch git cherry-pick 참고 문서 https://zetal.tistory.com/entry/git-cherry-pick-fatal-bad-r..

Git | GitLab 2023.05.09

[Git] cherry-pick - 특정 커밋 반영

개요 Git을 이용해 코드를 관리하다 보면 다른 브랜치에 적용된 커밋을 가져와 적용해야 하는 경우가 발생한다. 그런 경우 git rebase 또는 cherry-pick을 많이 사용하는데, 이 글에서는 cherry-pick에 대해 정리한다. rebase : 2022.11.20 - [Git] rebase - 브랜치 base 재지정 cherry-pick cherry pick이란 체리 한 바구니에 좋은 체리만 고르는 것에서 유래한 단어로, 좋은 것을 선별한다는 뜻으로 쓰인다. git에서 cherry-pick 명령은 다른 branch에서 발생한 여러 commit 중, 특정 commit에서 발생한 수정 사항을 브랜치에 반영할 수 있도록 한다. cherry-pick 명령어 뒤에 반영할 commit hash만 지정해 ..

Git | GitLab 2023.05.08

[Git] commit 상세 정보 확인

개요 git을 사용하면서 commit에 대한 정보를 간략하게 확인할 때는 git log 명령을 사용한다. git log 다만 해당 커밋에서 어느 파일을 수정했고, 수정된 부분은 어디인지 등의 정보는 나오지 않는데 이를 확인할 방법을 정리한다. git log 명령 1. --name-only --name-only 옵션을 사용하면 각 commit에서 어느 파일을 수정했는지 확인할 수 있다. git log --name-only 2. -p, --patch -p 옵션을 사용하면 각 commit에서 발생한 diff를 보여준다. git log -p git show commit을 지정해 git show 명령어를 사용하면 해당 commit의 로그 메시지와 텍스트 diff를 확인할 수 있다. git show # 예시 git..

Git | GitLab 2023.05.05

[Git] Detached HEAD란

개요 어느 날, Git 레포지터리 변경 사항이 원격 레포지터리로 push 되지 않아 확인해 보니 아래와 같은 상태였다……. 아무래도 레포지터리가 브랜치를 가키리는 게 아닌 것 같은데, 관련해서 알아본다. Detached HEAD란 Git에서 HEAD는 현재 checkout한 commit을 참조한다. 일반적으로 master, main과 같이 이름이 붙은 branch를 참조한다. 그리고 branch는 특정 commit을 참조한다. 이렇게 HEAD -> branch - commit 순으로 commit을 참조하는 상태를 attached HEAD 상태라고 한다. 반면 Detached HEAD란 HEAD가 branch를 통해 commit을 참조하는 상태가 아니라, 직접 commit을 참조하는 상태를 말한다. Det..

Git | GitLab 2023.04.18
1 2 3