Git 28

[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

[Git] switch - 브랜치 전환

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 이 글에서는 switch 명령어에 대해 정리한다. switch switch 명령어는 checkout의 기능 중 브랜치를 변경하는 부분만을 담당한다. 명령어만 달라지고 사용 방법은 동일하다. git switch # 예시 git switch b20220802 ..

Git | GitLab 2022.08.17

[Git] checkout - 파일 수정 삭제

git checkout Switch branches or restore working tree files branch를 전환하거나 파일 내용을 되돌리는 기능을 한다. 즉. reset과 비슷하게 동작할 수 있다. branch 전환에 대해서는 2022.08.13 - [Git] branch 생성/삭제에서 다뤘으므로, 이 글에서는 되돌리는 방법을 정리해둔다. 특정 파일 작업 내용 삭제 추적되고 있는 파일이어야 하며, add / commit 되지 않은 코드를 삭제한다. git checkout -- diff로 확인할 수 있었던 수정사항이 삭제된 것을 확인할 수 있다. 파일에도 실제 작업한 내용이 삭제되어 있다. 모든 변경 사항 취소 경로 내 모든 변경 사항을 취소한다. 추적되고 있는 파일이어야 하며, add / c..

Git | GitLab 2022.08.14

[Git] branch 생성/삭제

branch 여러 사람이 동일한 소스 코드를 공유하여 다룰 때 같은 소스 코드를 기반으로 서로 다른 작업을 하기 위한 기능. 독립적인 저장소 내에서 작업을 진행할 수 있다. 즉, 다른 브랜치에 영향을 받지 않기 때문에 한 개발자가 기능을 추가하는 동시에 다른 개발자가 버그를 수정할 수 있다. 저장소를 처음 생성하면 기본적으로 master 또는 main이라는 이름의 저장소가 생성된다. 이 글의 내용 일부는 2022.07.07 - [Git] 원격 브랜치 가져오기와 중복된다. branch 목록 확인 git branch # -r : --remotes. 원격지 브랜치 목록을 보여준다. # -a : --all. 원격지 브랜치 목록과 로컬 브랜치 목록을 모두 보여준다. # -vv : 트래킹 브랜치 설정을 보여준다. ..

Git | GitLab 2022.08.13

[Git] 원격 브랜치 가져오기

원격 브랜치 가져오기 Git을 사용하다 보면 지금 사용하고 있는 브랜치가 아니라, 원격 저장소에는 존재하는 브랜치에서 작업해야 할 때가 있다. git pull이나 clone을 새로 해봐야 원격 저장소의 브랜치가 내려받아지지는 않으므로 아래와 같은 절차를 통해 원격 브랜치를 로컬로 가져와야 한다. 테스트 환경 원격 저장소에는 main 브랜치와 b20220627이라는 브랜치가 존재한다. 로컬 저장소에는 main 브랜치만 존재하는 상태이다. 이 상태에서 b20220627 브랜치를 로컬 저장소로 가져와서 작업하고자 한다. 로컬 저장소의 원격 브랜치 목록 확인 git branch # -r : --remotes. 원격지 브랜치 목록을 보여준다. # -a : --all. 원격지 브랜치 목록과 로컬 브랜치 목록을 모두..

Git | GitLab 2022.07.07

[Git] git config 설정 확인/초기화

git config 2021.08.14 - git 사용자 설정에서는 git 사용 환경, 그중에서도 사용자 설정하는 방법에 대해 정리해두었다. 이 글에서는 설정을 수정하기 위해 초기화하는 방법을 정리해둔다. git config 설정 확인 현재 설정은 --list 옵션 또는 --get 옵션을 통해서 확인할 수 있다. 로컬 저장소마다 설정이 다를 수 있으므로, 확인할 로컬 저장소로 이동하여 확인하는 것이 좋다. 모든 설정 확인 --list 옵션을 이용해 모든 설정을 확인한다. git config -l # -l : --list. 모든 설정 확인 특정 설정 확인 --get 옵션을 이용해 특정 설정값을 확인한다. --get은 생략할 수 있다. git config -get # 또는 git config 설정 초기화 -..

Git | GitLab 2022.06.26

[Git] remote update

먼저 자주 사용하는 git fetch 명령어부터 간단히 정리한다. git fetch git fetch # --all : 모든 원격 브랜치 업데이트 원격 저장소의 최신 이력을 확인하는 명령어 가져온 최신 커밋 이력은 이름 없는 브렌치로 로컬에 가져오며, FETCH_HEAD라는 이름으로 checkout할 수 있다. fetch로 확인한 최신 이력을 로컬 저장소로 병합할 때는 pull 또는 merge를 실행한다. 옵션 없이 사용하면 로컬 저장소에 존재하는 브랜치에 대해서만 업데이트한다. 모든 원격 브랜치 이력을 업데이트하고 싶다면 --all 옵션을 사용한다. git remote update 원격 저장소의 최신 이력을 확인하는 명령어 git remote update 원격 저장소의 모든 브랜치에 대한 이력을 확인한..

Git | GitLab 2022.05.25
1 2 3