<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Git · 인재덕</title>
    <link>https://jared.lynskey.co.nz/ko/tags/git/</link>
    <description>소프트웨어 엔지니어링과 개발 조직 리더십에 대한 이야기. 성과 리뷰, 채용과 팀 확장, CI/CD, 데브옵스 모니터링, 에이전틱 AI. 서울에서 씁니다.</description>
    <generator>Hugo</generator>
    <language>ko</language>
    <copyright>© 2026 인재덕</copyright>
    <lastBuildDate>Wed, 28 Oct 2026 00:00:00 +1300</lastBuildDate>
    <atom:link href="https://jared.lynskey.co.nz/ko/tags/git/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Git 그래프 보는 법(터미널·VS Code): 마이크로매니징 없이 진행 상황 파악하기</title>
      <link>https://jared.lynskey.co.nz/ko/posts/2023/2023-06-02-project-progress-git-graph/</link>
      <guid isPermaLink="true">https://jared.lynskey.co.nz/ko/posts/2023/2023-06-02-project-progress-git-graph/</guid>
      <pubDate>Fri, 02 Jun 2023 11:30:03 +0000</pubDate>
      <dc:creator>Jared Lynskey</dc:creator>
      <category>Git</category>
      <category>Git Graph</category>
      <category>VS Code</category>
      <category>Project Management</category>
      <category>Engineering Manager</category>
      <description>git log --graph 명령어와 alias, 두 브랜치 비교, VS Code의 Git Graph 확장과 기본 그래프 뷰까지. 그리고 팀을 감시하지 않고 진행 상황을 파악하는 제 사용법입니다.</description>
      <content:encoded><![CDATA[<p>Git 그래프를 가장 빨리 보는 방법은 터미널입니다. <code>git log --graph --oneline --all --decorate</code>를 실행하면 모든 브랜치가 선으로 그려지고, 한 줄에 커밋 하나씩, 브랜치와 태그 이름이 해당 커밋 옆에 표시됩니다. VS Code에서는 소스 제어 뷰에 기본으로 들어 있는 Source Control Graph를 쓰거나, Git Graph 확장을 설치하면 더 크고 클릭도 되는 그래프를 볼 수 있습니다. 둘 다 글 마지막에서 자세히 다룹니다.</p>
<p>&ldquo;진행 상황 어때요?&ldquo;라는 질문을 반기는 사람은 없습니다. 그런데 회사에서 프로젝트를 이끄는 입장에서는 진행 상황을 모르고 지나갈 수도 없죠. 제 타협점이 Git 그래프입니다. 누군가에게 묻기 전에 먼저 그래프를 봅니다. 대부분의 경우 답은 이미 거기 있습니다. 커밋 활동, 브랜치, 병합이 한눈에 보이고, 그걸 위해 회의를 잡을 필요도 없습니다.</p>

<h3 class="relative group">그래프에서 실제로 읽을 수 있는 것
    <div id="그래프에서-실제로-읽을-수-있는-것" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%ea%b7%b8%eb%9e%98%ed%94%84%ec%97%90%ec%84%9c-%ec%8b%a4%ec%a0%9c%eb%a1%9c-%ec%9d%bd%ec%9d%84-%ec%88%98-%ec%9e%88%eb%8a%94-%ea%b2%83" aria-label="앵커">#</a>
    </span>
    
</h3>
<p><figure><span class="mc-img" style="--lqip:url('data:image/webp;base64,UklGRqoAAABXRUJQVlA4IJ4AAAAQBgCdASogABgAPw1yrE0mIyIhKAqoxiGJ5QC3uywCxQFpuHEPXSkTd6B0z2RWZa4T7Y8RfsruOsAA/vd8+2CpyheBOdEz3RjVNYlC9RtFoqjOvb/UUWB572vAmnOtzv/AnG5mtp9GYAzXQce5Jk69dXACVLuYiXixGTwngnNtwm/gJSEGWEDi7N2CT1vDSW68w98W/Qmb3QPw7xAAAA==')"><img
    class="my-0 rounded-md"
    loading="lazy"
    decoding="async"
    fetchpriority="auto"
    alt="Git Graphs"
    width="2560"
    height="1920"
    src="https://jared.lynskey.co.nz/img/posts/gitgraphs/image_hu_4be8d7d2144dd617.webp"
    srcset="https://jared.lynskey.co.nz/img/posts/gitgraphs/image_hu_4be8d7d2144dd617.webp 800w, https://jared.lynskey.co.nz/img/posts/gitgraphs/image_hu_b6056380eece4a86.webp 1280w"
    sizes="(min-width: 768px) 50vw, 65vw"
    data-zoom-src="https://jared.lynskey.co.nz/img/posts/gitgraphs/image_hu_1c52b3c34db54258.webp"></span></figure>
</p>
<p>찬찬히 본 적이 없는 분들을 위해 설명하면, 노드 하나가 커밋이고 갈라져 나가는 선이 브랜치이며, 전체가 프로젝트의 타임라인이 됩니다. 이 배치에 생각보다 많은 정보가 담겨 있습니다.</p>
<ul>
<li>한 번 훑어보는 것만으로 활성 브랜치 수와 커밋 빈도가 보입니다.</li>
<li>갑자기 조용해진 브랜치나 몇 주째 병합되지 않은 브랜치는 대개 누군가 막혀 있다는 신호입니다. 이런 조기 경보는 값지죠.</li>
<li>병합 빈도는 팀의 협업 방식을 비춥니다. 병합이 잦다는 건 작업이 꾸준히 통합되고 있다는 뜻이고, 너무 오래 산 브랜치는 고립된 작업이 되어 있을 가능성이 높습니다.</li>
</ul>

<h3 class="relative group">방해는 줄고, 대화는 나아지고
    <div id="방해는-줄고-대화는-나아지고" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%eb%b0%a9%ed%95%b4%eb%8a%94-%ec%a4%84%ea%b3%a0-%eb%8c%80%ed%99%94%eb%8a%94-%eb%82%98%ec%95%84%ec%a7%80%ea%b3%a0" aria-label="앵커">#</a>
    </span>
    
</h3>
<p>눈에 띄는 이득은 누구의 작업도 끊지 않고 상황을 알 수 있다는 겁니다. 더 큰 이득은 정말 대화가 필요해졌을 때 나타납니다. 추측이 아니라 그래프에서 이야기를 시작할 수 있거든요. &ldquo;이 브랜치가 화요일부터 안 움직이던데, 뭐 막힌 거 있어요?&ldquo;는 &ldquo;진행 상황 어때요?&ldquo;보다 훨씬 나은 첫마디입니다.</p>
<p>루틴을 공개해 두는 것도 도움이 됩니다. 저는 거의 매일 아침 슥 훑어보고, 일주일에 한 번 제대로 들여다봅니다. 팀도 그 리듬을 알고 있으니 아무도 놀라지 않습니다.</p>

<h3 class="relative group">감시 도구로 만들지 말 것
    <div id="감시-도구로-만들지-말-것" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%ea%b0%90%ec%8b%9c-%eb%8f%84%ea%b5%ac%eb%a1%9c-%eb%a7%8c%eb%93%a4%ec%a7%80-%eb%a7%90-%ea%b2%83" aria-label="앵커">#</a>
    </span>
    
</h3>
<p>이 부분은 저 스스로에게도 계속 되뇌는 대목입니다. 커밋 수는 가치가 아닙니다. 공들인 커밋 하나가 요란한 커밋 50개를 이길 때도 있습니다. 모든 커밋이 보인다고 해서 모든 결정에 토를 달 자격이 생기는 것도 아니고요. 팀을 믿고, 패턴이 정말 수상할 때만 개입해야 합니다. 그리고 그래프를 대화에 끌어들일 때는 피드백의 출발점으로 써야지, 기소용 증거로 쓰면 안 됩니다.</p>

<h3 class="relative group">터미널에서 그래프 보기
    <div id="터미널에서-그래프-보기" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%ed%84%b0%eb%af%b8%eb%84%90%ec%97%90%ec%84%9c-%ea%b7%b8%eb%9e%98%ed%94%84-%eb%b3%b4%ea%b8%b0" aria-label="앵커">#</a>
    </span>
    
</h3>
<p>Git만 있으면 됩니다.</p>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git log --graph --oneline --all --decorate</span></span></code></pre></div></div>
<p>옵션별 의미는 이렇습니다.</p>
<ul>
<li><code>--graph</code>: 왼쪽에 브랜치와 병합 선을 그립니다.</li>
<li><code>--oneline</code>: 커밋 하나를 한 줄로, 짧은 해시와 메시지 첫 줄만 보여 줍니다.</li>
<li><code>--all</code>: 지금 있는 브랜치뿐 아니라 원격을 포함한 모든 브랜치와 태그를 보여 줍니다.</li>
<li><code>--decorate</code>: 브랜치와 태그 이름을 가리키는 커밋 옆에 표시합니다. 최근 Git은 출력이 터미널로 갈 때는 알아서 표시하지만, 이 옵션을 붙여 두면 파이프로 다른 명령에 넘길 때도 이름이 남습니다.</li>
</ul>
<p>매일 아침 이걸 다 칠 수는 없으니 alias로 만들어 둡니다.</p>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git config --global alias.graph <span class="s2">&#34;log --graph --oneline --all --decorate&#34;</span>
</span></span><span class="line"><span class="cl">git graph</span></span></code></pre></div></div>
<p>오래된 저장소라면 그래프 전체는 스크롤이 끝나질 않습니다. 줄이는 방법 몇 가지입니다.</p>
<div class="highlight-wrapper"><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git graph --since<span class="o">=</span><span class="s2">&#34;2 weeks ago&#34;</span>    <span class="c1"># 최근 2주만</span>
</span></span><span class="line"><span class="cl">git graph -20                      <span class="c1"># 최근 커밋 20개만</span>
</span></span><span class="line"><span class="cl">git log --graph --oneline main..feature                <span class="c1"># feature에는 있고 main에는 아직 없는 것</span>
</span></span><span class="line"><span class="cl">git log --graph --oneline --left-right main...feature  <span class="c1"># 양쪽 모두, &lt; 와 &gt; 로 구분</span></span></span></code></pre></div></div>
<p>마지막 두 줄은 두 브랜치 비교입니다. alias 대신 그냥 <code>git log</code>를 쓰는 이유는, <code>--all</code>이 들어가면 다른 브랜치가 전부 다시 딸려 오기 때문입니다. 점 두 개는 <code>feature</code>에는 있고 <code>main</code>에는 없는 것을 보여 줍니다. 점 세 개에 <code>--left-right</code>를 붙이면 서로 상대에게 없는 것을 양쪽 다 보여 주니, 오래 살아 있는 브랜치가 얼마나 멀어졌는지 금방 확인할 수 있죠.</p>

<h3 class="relative group">VS Code에서 그래프 보기
    <div id="vs-code에서-그래프-보기" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#vs-code%ec%97%90%ec%84%9c-%ea%b7%b8%eb%9e%98%ed%94%84-%eb%b3%b4%ea%b8%b0" aria-label="앵커">#</a>
    </span>
    
</h3>
<p>VS Code에는 그래프가 기본으로 들어 있습니다. 소스 제어 뷰(Ctrl+Shift+G)를 열면 그 패널 안에 Source Control Graph 섹션이 있습니다. 1.93 버전(2024년 8월)부터 생긴 기능입니다. 기본값으로는 현재 브랜치와 그 원격 브랜치를 따라가고, 그래프 제목 표시줄의 브랜치 선택기로 다른 브랜치를 추가할 수 있습니다. 가볍게 훑어보는 용도라면 이것으로 충분합니다.</p>
<p>모든 브랜치를 한 번에 보고 싶다면 mhutchie의 Git Graph 확장을 설치합니다(확장 뷰에서 &ldquo;Git Graph&rdquo; 검색). 상태 표시줄의 Git Graph 항목, 소스 제어 뷰 상단의 Git Graph 아이콘, 또는 명령 팔레트의 <em>Git Graph: View Git Graph (git log)</em> 중 아무거나로 열면 됩니다. 커밋을 클릭하면 바뀐 파일이 보이고, 한 커밋을 클릭한 뒤 다른 커밋을 Ctrl/Cmd+클릭하면 둘을 비교할 수 있습니다. 다만 이 확장은 2021년 이후 새 릴리스가 없어서, 기본 그래프도 알아 두면 좋습니다.</p>
<p>Git Graph 버튼이 안 보인다면 확장이 저장소를 못 찾았을 가능성이 큽니다. 기본 설정에서는 연 폴더 자체만 확인하고 하위 폴더까지는 찾지 않습니다. 저장소 폴더를 직접 열거나, 설정에서 <code>git-graph.maxDepthOfRepoSearch</code> 값을 올리세요.</p>

<h3 class="relative group">그 밖의 도구
    <div id="그-밖의-도구" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%ea%b7%b8-%eb%b0%96%ec%9d%98-%eb%8f%84%ea%b5%ac" aria-label="앵커">#</a>
    </span>
    
</h3>
<p>웬만한 Git 도구에는 어딘가에 그래프가 있습니다. <code>gitk --all</code>은 Git 자체의 히스토리 브라우저입니다. GitHub, GitLab, Bitbucket에는 리포지토리 페이지에 &ldquo;네트워크&quot;나 &ldquo;그래프&rdquo; 뷰가 있고요. 데스크톱 클라이언트인 SourceTree(Atlassian의 무료 도구), GitKraken, Tower, Windows용 TortoiseGit에도 모두 그래프가 있습니다.</p>
<p>무엇을 고르든 목적은 같습니다. 진행 상황을 이해하는 것. 커밋 수를 세는 게 아니라요.</p>
]]></content:encoded>
      <media:content url="https://jared.lynskey.co.nz/en/posts/2023/2023-06-02-project-progress-git-graph/featured.jpeg" medium="image" type="image/jpeg" />
    </item>
  </channel>
</rss>
