본문 바로가기

잡다/git

(11)
[git] git commit message convention https://www.youtube.com/watch?v=OJqUWvmf4gg https://github.com/pvdlg/conventional-commit-types https://www.conventionalcommits.org/ko/v1.0.0/ https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716 내가 작성한 커밋을 누군가 나중에 봤을 때 어떤 의미인지 잘 파악할 수 있도록 작성해야 함. 커밋 메시지 작성 방법은 집단마다 다를 수 있지만(협업 툴에서 정의한 작업 번호를 사용하는 등), 공통적으로 특정 커밋이 어떤 의미로 수행된 것인지 파악하기 쉽게 작성하는게 중요하다. 커밋 메시지 구조 [optional scope]: [opti..
[git] WSL2 환경에서의 글로벌 .gitconfig WSL2 ubuntu 20.04 환경에서 깃허브를 이용하기 위해 커밋을 진행하고 있는데, 어느 순간 다음과 같은 에러를 발생시키면서 커밋을 실패했다. error: insufficient permission for adding an object to repository database .git/objects error: .github/workflows/deploy.yml: failed to insert into database error: unable to index file '.github/workflows/deploy.yml' fatal: updating files failed 대략 권한 문제가 있다는 메세지로 보여서 sudo 명령으로 커밋을 진행하기로 했다. 그랬더니 커밋 자체는 제대로 수행되지만, ..
[Git 09] Stash 통상적인 업무를 하다가 갑자기 긴급한 버그를 발견하거나, 수정 사항이 생겨 해당 업무를 먼저 처리해야 하는 상황이 있을 수 있다. 그런데 깃은 변경사항이 저장되지 않은 경우 ( 스테이지 상태에 뭔가 있는 경우 ) 충돌의 문제로 브랜치 이동을 허용하지 않는다. 이런 상황에서 stash 명령어는 큰 도움이 된다. stash 명령은 수행중인 상태를 임시로 저장하기 위한 명령으로, 명령 수행 이후 변경 이전의 커밋 상태로 돌아간다. 작업중인 업무 임시 저장 $git stash // 현재 진행중인 상황을 임시 저장 $git stash save "message" // 메시지를 달아 임시 저장 $git stash push // stash save을 대체할 가능성이 있는 명령 스태시 리스트 보기 $git stash l..
[Git 08] 브랜치 하나의 프로그램은 다양한 모듈 단위로 구성되는 경우가 많다. 이때 해당 모듈들이 긴밀한 관계를 가지는 것이 아니라면, 이들을 각각 나눠 다른 멤버가 생성하고 규칙에 따라 합병하는 방식으로 코드를 작성할 수도 있을 것이다. 이때 다양한 모듈들이 충돌 및 의존성이 적은 관계라면 굳이 하나의 흐름 내에서 개발할 필요는 없다. 깃은 특정 작업에 따라 구분하고 싶은 경우 branch 명령을 이용하여 흐름 분기를 나눠 해당 분기들이 따로 동작할 수 있게 한다. 브랜치는 커밋들 사이를 넘나들 수 있는 포인터의 일종으로, 하나의 커밋을 가리키는 SHA-1 체크섬 파일에 불과하다. 프로젝트를 통째로 복사하는 대신 스냅샷 방식으로 동작하므로, 복사 작업에 드는 시간이 짧다. 프로젝트 생성 최초 시점에 master 브랜치가..
[Git 07] 서버 Git을 자신의 컴퓨터 내부에서만 사용하면 단순한 버전 관리 시스템이 되지만, 특정 서버에 올려 이를 다수의 사람들과 공유하며 작업하면 협업을 위한 툴이 될 수 있다. Git에서 프로젝트의 각 버전은 충돌이 발생해서는 안되며, 충돌 발생 시 사용자가 개입하여 수정하는 작업을 수행해야 하기 때문에 Github와 같은 깃 서버를 사용하여 협업하는 경우, 사용자들에게 중복되지 않는 작업을 보장한다. 서버 연결 프로토콜 https://git-scm.com/book/ko/v2/Git-%EC%84%9C%EB%B2%84-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C 서버 연결 방식에는 Local, HTTP, SSH, Git 이 있다. Local 리모트 저장소가 동일 시스템 내 다른 디렉토리 ( 보..
[Git 06] Alias Git에는 많은 명령어가 존재한다. 특정 명령어 라인은 매우 자주 사용되지만 해당 명령의 길이가 길어 사용할 때마다 작성하는 것이 부담스러운 경우가 있는데, 이 경우에 명령어에 대한 별칭을 붙여주는 것이 alias 이다. alias 는 단순히 config를 통해 선언함으로써 사용 가능하다. alias로 선언되면, 일반적인 명령어처럼 작동하게 된다. 이때 코드의 작성은 기존 명령에서 git 만 제거하고, 따옴표로 덮으면 된다. git config alias. "" git config --global alias.lb "log --graph --pretty='[%h] %an %ad\n: %s'" //그래프를 보여주면서, 짧은 해시 및 저자의 이름, 작성 시간, 코드를 보여준다. git config alias...
[Git 05] remote Git은 로컬 영역에서 버전을 관리하는 시스템이다. 따라서 협업이나 코드의 공유 목적으로 원격(remote) 서버를 이용하는데, 이때 외부 서버의 내용과 내부 Git 시스템을 연결하기 위한 명령어가 remote 이다. 또한 이런 원격 서버 중 가장 잘 알려져 있는 것이 Github이다. 프로그래머들은 외부 서버를 이용하여 동일 코드를 유지하면서 각자의 코드를 작성할 수 있다. 이때 외부 서버를 지칭하기 위해 이름 및 주소가 필요하며, 해당 주소를 통해 다른 프로그래머들은 동일 코드에 접근할 수 있다. 저장소 목록 보기 git remote // 단순히 이름만 출력 git remote -v // 이름과 경로 출력 저장소 등록 git add // address를 name으로 등록 //origin 등의 이름을 ..
[Git 04] commit commit에는 '~을 적어두다' 는 뜻이 있다. Git에서 사용되는 commit은 파일의 수정 내역을 .git Repository에 기록하는 것으로, 원 단어의 뜻과 의미가 통한다. Git에서는 파일들의 기록을 커밋이라는 스냅샷 단위로 저장한다. 이때 이전 버전에 비해 수정된 내역만이 저장되므로, 파일시스템을 통해 버전관리를 할때 발생하는 코드의 중복이 발생하지 않는다. 깃 폴더 생성 git init 깃 파일 상태 확인 git status 파일 등록 untracked 파일을 tracked로 등록할 때, unstaged 파일을 staged 상태로 전환할 때 모두 add 명령어 사용 git add git add . // 모든 파일 등록 파일 등록 취소 //01. tracked 상태 파일을 untracked..