#git

픽셀노마드픽셀노마드· 10일

"이 파일 누가 짰지?" git-who로 팀 협업을 더 재밌고 스마트하게!

개발하다 보면 이런 순간이 자주 찾아옵니다."이 파일 누가 주로 만들었지?""이 서비스 모듈 담당자가 누군가요?""레거시 코드 좀 봐야 하는데, 누가 제일 많이 건드렸는지 궁금하네..."보통은 git blame 이나 git log, git shortlog 같은 Git의 공식 명령어를 사용하죠. 그런데 이 명령어들은 정보를 잘게 쪼개서 주기 때문에 '딱 이 파일에 누가 가장 기여했는지 한눈에 보기 어렵습니다.이럴 때!오늘 소개할 git-who가 큰 도움이 됩니다.바로, 파일에 대한 주요 기여자를 퍼센트로 보여주는 작은 CLI 툴입니다.🚩 git blame vs git-who 차이점git blame은 파일의 각 줄마다 누가 작성했는지를 확인할 수 있는 Git의 공식 명령어입니다. 주로 문제가 발생한 코드에서 "이 줄은 누가 썼을까?"를 확인할 때 사용합니다.반면, git-who는 파일 전체에서 누가 몇 퍼센트나 기여했는지를 비율로 보여주는 도구입니다.쉽게 말해 git blame이 라인 단위로 세세하게 추적하는 것이라면, git-who는 파일 전체의 기여도를 요약해서 보여주는 도구입니다.git blame은 라인별로 작성자를 하나하나 확인할 때 사용하고,git-who는 파일 또는 디렉토리 단위로 주요 기여자와 그 비율을 한눈에 파악할 때 유용합니다.팀에서는 git-who를 활용해 담당자 파악, 코드 리뷰어 추천, 레거시 코드의 책임자 확인 등 다양한 상황에서 쉽게 사용할 수 있습니다.🤔 git blame은 이런 한계가 있어요예를 들어 git blame user_service.py를 하면 이렇게 나옵니다.e5f6a8d1 (Alice 2024-03-19 15:22:10 +0900 1) def get_user(): f67a1bc9 (Bob 2024-03-19 15:23:01 +0900 2) return self.user_id라인별 작성자는 잘 보이지만,"그럼 Alice가 이 파일에 몇 퍼센트나 기여했을까?"를 바로 확인할 수는 없습니다. 직접 손으로 카운트해야 하죠.🏆 그래서 등장한 git-whogit-who는 Python으로 작성된 오픈소스 CLI 도구로, git blame을 내부적으로 실행한 뒤 작성자별로 라인 수를 집계해서 퍼센트로 보여줍니다.사용법은 매우 간단합니다git who user_service.py출력 결과70% Alice 30% Bob와우! 파일의 주요 기여자 비율을 한 번에 확인할 수 있네요.🧩 git-who 실제 활용 꿀팁 5가지1. 코드 리뷰 담당자 추천git who를 통해 가장 많은 기여를 한 사람을 코드 리뷰어로 지정하면 자연스럽게 "내가 많이 짠 코드"를 리뷰하게 되어 품질도 올라갑니다.2. 레거시 코드 관리 지표특정 파일에 누군가 90% 이상 기여했다면? 이 사람만 아는 코드일 가능성이 큽니다.빠르게 지식 공유를 해야 할 타이밍!3. 온보딩 가이드신규 팀원이 "이 모듈 누가 담당했나요?" 물어볼 때, git who 결과를 보여주며 담당자를 객관적으로 소개할 수 있습니다.4. 리팩토링 협의리팩토링 대상 파일에서 상위 기여자 리스트를 뽑아, 사전 협의 및 기술 부채(Tech Debt) 공유를 효율적으로 할 수 있습니다.5. 팀 이벤트에도 활용 가능"누가 이 파일의 지배자인가?"팀 내에서 파일별로 기여도가 가장 높은 사람을 뽑아 개발자 시상식 같은 재미 요소로도 활용 가능!💡 git-who 한계와 커스터마이징 팁📌 문제: 작성자 이름이 잘려요기본 git-who는 John Doe 이름에서 John만 가져오는 이슈가 있습니다.이유는 단순 split 로직 때문입니다.🔧 해결: 정규식으로 보완하기import re for line in blame_output.split("\n"): match = re.search(r'\((.*?)\s+\d{4}-', line) if match: author = match.group(1) authors.append(author) John Doe → John Doe로 제대로 파싱됩니다.⚙️ CI/CD에 자동화로 붙이기 (GitHub Actions + Slack)팀에서 PR이 올라올 때마다 자동으로 주요 기여자를 분석하고 Slack으로 알림까지 할 수 있습니다.예시 Workflowname: Git Who Check on: pull_request: types: [opened, synchronize] jobs: git-who-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.x' - name: Install git-who dependencies run: pip install -r requirements.txt - name: Run git-who on changed files run: | for file in $(git diff --name-only origin/main); do echo "Analyzing $file" git who "$file" >> who_report.txt || true done - name: Notify to Slack uses: slackapi/[email protected] with: payload: | { "text": "🔍 *Git-Who Report for PR #${{ github.event.pull_request.number }}*\n```$(cat who_report.txt)```" } env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}Slack 결과 예시:🔍 Git-Who Report for PR #42 services/payment.py 55% Alice 45% Bob models/order.py 80% Charlie 20% Alice✨ 활용 아이디어 확장danger.js로 PR 코멘트 자동 등록git who 결과를 기반으로 리뷰어 자동 태그 봇 제작팀 내 "이달의 마스터 파일" 선정 이벤트🚀 마무리: git-who는 작지만 강력한 도구입니다!git blame의 아쉬운 부분을 채워주는 git-who.리뷰 문화, 코드 관리, 협업을 더 효율적이고 재밌게 만들어줄 수 있습니다.이제 더 이상 "누가 짰지?"를 고민하지 마세요!
97
1
0
겍코겍코· 2년

iTerm에서 git pull 하는데 계속 \

"Login failed due to incorrect login credentials or method" git pull 명령 시 패스워드도 정확히 입력했는데 계속해서 위와 같이 에러가 났다. ssh key도 다시 설정해보고 git 설정도 reset 했는데도 계속 같은 에러가 났다. 해결 방법은? iTerm 터미널 프로그램이 문제였다. iTerm이 키보드 문자 입력을 어딘가 잘못 받고 있었음. iTerm 프로그램 세션을 종료하고 다시 실행하여 접속한 후 git pull 하니 정상적으로 동작!!😀
758
1
0
sonaki84sonaki84· 4년

초보자가 풀스택 개발자가 될 수 있는 가장 빠르고 간단한 방법

1단계 – HTML 2단계 – CSS 3단계 – JavaScript 4단계 – React 5단계 – Node.js 6단계 – MySQL 7단계 – MongoDB 8단계 – Git 명령어 9단계 – 프로젝트 만들어서 GitHub에 올리기   축하합니다!! 풀스택 개발자가 되셨습니다!! 취업 준비 완료!!
1.3K
1
2
0
닥터핸
닥터핸·2021-03-04
얼추 동감합니다
강구강구· 5년

질문기초적인... git 사용법 질문(by 소스트리)

예를 들어 원격브랜치와 로컬브랜치가 B1, B2, B3, B4, B5 이렇게 존재하고 A군은 B1을 수정하고 C군은 B2를 수정한다고 가정했을 때,   C군이 B1의 수정된 내용을 B2에 적용하려고 합니다. (나머지 B3, B4, B5는 적용x) 단 B1, B2 브랜치를 병합하여 하나의 브랜치로 만드는게 아닌 B1, B2브랜치 가지는 그대로 두 되, B1의 내용은 건들지않고 B1에서 변경된 내용을 B2에만 적용하고자 할때 어떤 기능을 써야될까요? 커맨드 입력말고 소스트리로 할수 있는 방법이 있는지, 있다며 어떻게 할 수 있는지 조언 부탁 드립니다.
1.7K
1
1
0
kimho
kimho·2020-05-14
원하시는 방법인지 모르겠습니다만, 다른 브랜치에 있는 커밋을 선택적으로 내 브랜치에 적용시킬 때 git cherry-pick 이라는 명령어가 있습니다. https://imasoftwareengineer.tistory.com/7   소스트리에서 사용하는 방법은 아래와 같습니다. https://goodayth.github.io/git-cher...
겍코겍코· 7년

github.com의 소스를 탐색해주는 브라우저 확장 프로그램 Octotree

Octotree - GitHub code tree GitHub on steroids chrome.google.com github.com의 소스 트리를 쉽게 탐색할 수 있게 해주는 브라우저 확장 프로그램입니다.엄청 유용하네요^^
4.2K
1
1
0
라이너
라이너·2021-03-03
ㅎㅎ