Git 34

[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

[Git] fatal: Unable to create '.git/index.lock' : File exists.

현상 Git commit을 하기 위해 add를 시도할 때 아래와 같은 오류가 발생하면서 정상적으로 동작하지 않는 경우가 있다. fatal: Unable to create 'E:/git_project/branch_test/.git/index.lock': File exists. 해결 방법을 정리해둔다. 원인 .git/index.lock은 해당 레포지터리에서 git 프로세스가 동작중일 때 다른 git 프로세스가 동작하는 것을 방지하기 위해 프로세스 실행 여부 확인 목적으로 생성되는 파일이다. 즉, git 프로세스를 실행하면서 index.lock 파일을 생성하고 실행을 종료하면서 삭제하는 식으로 동작하는 것 같다. 따라서 어떤 이유에서건 index.lock 파일이 정상적으로 정리되지 않았을 때 발생할 수 있는 ..

Git | GitLab 2022.11.29

[Git] rebase - 브랜치 base 재지정

Rebase 두 개의 공통 base를 가진 브랜치에서 한 브랜치의 base를 다른 브랜치의 최신 커밋으로 옮기는 작업이다. 문자 그대로 base를 다시 설정하는 작업이다. 브랜치를 합치는 방법 중 하나이기도 하다. 장단점 장점 1. 공유하고 있는 브랜치의 최신 변경 이력을 즉시 반영할 수 있다. 2. rebase는 별도의 커밋 이력을 남기지 않아 보다 깔끔한 commit history를 유지할 수 있다. 단점 1. 충돌이 발생하면 각 commit마다 충돌을 해결해주어야 한다. 충돌을 해소할 때마다 continue rebase를 해주어야 하는 번거로움이 있을 수 있다. 2. 이미 원격 저장소에 push 한 커밋을 rebase 하는 것은 위험하다. 방법 현재 Git 저장소 상태가 아래와 같다고 하자. 작업을..

Git | GitLab 2022.11.20

[Git] Commit 메시지 수정

개요 Commit 메시지를 다 못 썼는데, 실수로 엔터를 눌러버렸다……. 원격 저장소에 저 메시지로 Push 할 수는 없으니, 커밋 메시지를 수정하는 방법을 정리해둔다. 마지막 커밋 메시지 수정 git commit --amend # --amend : 이전 commit 수정 --amend 옵션을 사용하면 자동으로 텍스트 편집기를 실행시켜 마지막 커밋 메시지를 열어준다. 편집기에서 메시지를 변경하고 저장하면 된다. 💡 commit 이후 새로운 수정 사항까지 포함하고 싶은 경우에도 git commit --amend를 사용할 수 있다. 내용 수정 -> git add -> git commit --amend 순으로 실행하면 된다. 여러 커밋의 메시지 수정 여러 개의 커밋 메시지를 수정할 때는 git rebase를 ..

Git | GitLab 2022.11.09

[Git] restore - 수정 사항 삭제

checkout 기능 분리 공식 문서는 git checkout의 기능을 다음과 같이 정의하고 있다. git checkout : Switch branches or restore working tree files 즉, 두 개 이상의 기능을 가지고 있는데 2.23 버전에서 기능 각각이 switch, restore 명령어로 분리되었다. git switch : Switch branches git restore : Restore working tree files 이 글에서는 restore 명령어에 대해 정리한다. git switch는 2022.08.17 - [Git] switch에서 정리했다. restore restore는 checkout의 기능 중 파일 내용을 되돌리는 기능만을 담당한다. 옵션 없이 사용하면 HE..

Git | GitLab 2022.08.18
1 2 3 4