페어프로그래밍인데 커밋은 한명이?

주노·2023년 2월 15일
31
post-thumbnail

서론

페어프로그래밍을 진행하면서 한명의 컴퓨터로 작업을 진행하고, 자신의 로컬로 가져오는 과정을 겪었다. 커밋 내역에 자신의 이름이 들어가지 않아 약간 서운한 크루들이 있을거라고 생각한다.

나도.. 같이했는데.. 🥺 왜 커밋내역에는 페어만 있는거야...
제가 그랬다는건 아니고..ㅎㅎ

새로운 페어 도이에게 commit 내역에 작성자를 두명 이상 남기는 방법이 있다는 것을 알게되어 이를 적용하는 과정을 공유하고자 포스팅을 남기려고 한다.

도움주신 허브, 도이 감사합니당🙇‍♂️

Co-authored-by

GitHub에는 특정 문구를 통해 함께 작업한 작성자를 인식한다.

바로 커밋 메시지에 Co-authored-by: 를 접두어로 추가하여 공동 작성 커밋을 만들 수 있다.

IntelliJ

Git Fork

원격 저장소에 Push 했을때의 모습

다음과 같은 형태로 작성한다.
Co-authored-by: {GitHubId} <{email}>

아래 내용을 복붙하여 자신의 설정에 맞춰보도록하자!
ex) Co-authored-by: choi-jjunho <junho5336@gmail.com>

이메일은 반드시 GitHub와 연동된 이메일을 사용해야한다.

더 궁금하다면 GitHub 공식문서를 통해 자세히 알아보자.

git commit.template

위와 같이 커밋을 함께 작성하는 방법은 알았다.
하지만 커밋을 할 때 마다 일일히 저 문구를 붙여주는것이 복붙을 한다해도 여간 귀찮은 일이 아닐 수 없다.

Git에는 커밋 메시지 템플릿을 설정해 커밋을 할때마다 지정한 양식을 사용할 수 있다.
이를 통해 자동으로 협업하는 팀원을 넣어보도록 하자.

Git Config

템플릿 설정을 알기 전 Git Config에 대해 잠시 알고 넘어가도록 하자.

우리가 Git을 사용하는 프로젝트에는 항상 .git 폴더가 존재한다.

Mac의 Finder에서 숨김파일을 보는 단축키!! : CMD + SHIFT + .

.git 폴더 내부에는 git과 관련된 다양한 설정들이 존재하는데

우리가 이번에 활용할 부분은 바로 config 파일이다.

Config의 범위

git config 파일은 프로젝트, 사용자 홈 디렉토리, 시스템 루트 디렉토리에 존재하며 각각의 파일별로 범위가 설정된다.

--system

시스템 공통으로 적용되는 설정을 위한 옵션이다.

/etc/gitconfig 파일을 찾아 해당 시스템에 있는 모든 사용자/저장소에 적용된다.

--global

해당 사용자에게만 적용된다.

~/.gitconfig 파일을 찾아 해당 사용자에의 저장소에 적용된다.

아직 Unix 체제의 사용자라는 개념이 익숙하지 않다면 Linux 사용자 라는 키워드를 중심으로 학습해 보는것을 추천드립니다 🥺

--local

프로젝트 내부의 .git 디렉토리의 config 파일 .git/config 파일을 통해 현재 작업중인 저장소에만 적용된다.

위와같은 범위별 설정이 존재하는데 우선순위는 가장 큰 범위부터 순차적으로 덮어쓴다고 생각하면 된다.

시스템 설정 < 사용자 설정 < 프로젝트 설정

template 설정 해보기 (응애 CLI 어려워...)

Git에는 commit.template 옵션을 통해 커밋 템플릿 메시지를 사용할 수 있다.

현재 작업할 로컬 프로젝트에 대해서 템플릿 메시지를 적용해보도록 하자 (--local 옵션)

템플릿 파일 생성

템플릿으로 사용할 파일을 생성해준다.

확장자는 txt파일이 되고 파일명은 편의상 .gitmessage로 두고 진행해보겠다.
.gitmessage라는 파일명이 마음에 들지 않는다면 다른 이름을 사용해도 무관하다.

위에는 커밋 메시지를 작성할 예정이니 두칸 띄워주고 맨 아래에 Co-authored-by: ... 문구를 넣어준다.

#으로 주석을 작성할 수도 있다.
이는 커밋에 반영되지 않으므로 주석을 활용하고자 한다면 알아두면 좋다.

템플릿 설정

템플릿으로 사용할 파일을 만들었으니 템플릿을 설정해줄 일만 남았다.

다음 명령어를 통해 템플릿 설정을 할 수 있다.

git config {범위 옵션} commit.template {템플릿 파일명}

ex) git config --local commit.template .gitmessage.txt

프로젝트의 .git 디렉토리 내부의 config 파일을 보면 다음과 같이 설정이 되어있을 것이다.

확인하기

다음과 같이 커밋을 할 때 마다 문구가 자동으로 추가되어있는 모습을 볼 수 있다.

만약 IntelliJ를 혹은 다른 IDE를 사용해 커밋을 한다면 위 설정 후 IDE를 재실행 시켜주면 적용되어있는 모습을 볼 수 있다

변경하기

.gitmessage.txt의 내용만 변경하고 저장하면 템플릿 메시지를 자유롭게 수정할 수 있다.

마찬가지로 적용이 안된다면 IDE 재실행을 시켜보는것을 추천한다.

template 설정해보기 (CLI 안어려워)

CLI 환경이 더 익숙하신 분들 혹은 CLI와 친해지고 싶은 분들을 위한 가이드입니다.

cd {프로젝트 경로} : 프로젝트 경로로 이동합니다.
cd .git : .git 디렉토리로 이동합니다.
cat config : config 파일의 내용을 콘솔에 출력합니다.

cd .. : 상위 디렉토리로 이동합니다.
touch .gitmessage2.txt : .gitmessage2.txt 라는 이름의 빈 파일을 생성합니다.
vim .gitmessage2.txt : vim 에디터를 이용해 .gitmessage2.txt라는 파일을 수정합니다.

git config --local commit.template .gitmessage.txt : .gitmessage2.txt 파일에 있는 내용을 커밋 기본템플릿으로 사용합니다.
(--local 옵션을 통해 해당 프로젝트에만 적용됩니다.)

vim 사용법은 내용이 길어지니 패스..

CLI 어렵지않아요~~!

결론

아주 중요한 설정은 아니지만 Git의 기능을 잘 활용하여 페어 프로그래밍을 재미있게 할 수 있으면 좋겠습니다 ^^

Reference

https://velog.io/@bky373/Git-%EC%BB%A4%EB%B0%8B-%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%85%9C%ED%94%8C%EB%A6%BF

https://docs.github.com/ko/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors

profile
안녕하세요 😆

4개의 댓글

comment-user-thumbnail
2023년 2월 16일

와 정말 친절하게 알려주시네요👍 페어프로그래밍할 때 써보려고 하트 눌렀습니다 ㅎㅎ

1개의 답글
comment-user-thumbnail
2023년 2월 19일

덕분에 당당한 공동 저자가 되었습니다

1개의 답글