[카테고리:] 뉴스-라이프

한국 연예, 맛집, 이슈, 방송 정보

  • 협업 워크플로와 풀리퀘스트 사용법

    💡 풀리퀘스트는 단순한 코드 제출이 아니라, 팀원과 대화하는 공식 채널입니다. 포크→브랜치→커밋→PR→리뷰→머지 흐름만 몸에 익히면 어떤 팀 프로젝트도 두렵지 않습니다.

    처음 팀 프로젝트에 들어갔을 때의 그 막막함

    풀리퀘스트, 줄여서 PR. 취업 전에 이 단어를 처음 들었을 때 솔직히 ‘그냥 코드 올리는 거 아닌가?’ 싶었습니다. 근데 막상 팀 프로젝트에 들어가 보니 이게 전혀 다른 세계더라고요.

    제 주변에 개발 부트캠프를 막 졸업한 20대 중반 분이 있었는데, 처음 오픈소스 기여를 시도하다가 포크도 안 하고 원본 저장소에 직접 푸시하려다 에러를 만났다고 했습니다. “이게 왜 안 되지?” 하고 2시간을 혼자 붙잡고 있었다는 거예요. 저도 비슷한 경험이 있어서 그 답답함이 딱 와닿았습니다.

    그래서 오늘은 풀리퀘스트를 중심으로 GitHub 협업 워크플로 전체를 한 번에 정리해드리려 합니다. 포크부터 머지까지, 실제로 쓰이는 순서 그대로요.

    포크와 브랜치, 뭐가 다른 건가요?

    💡 포크는 저장소 자체를 내 계정으로 복사하는 것, 브랜치는 같은 저장소 안에서 작업 공간을 나누는 것입니다.

    여기서 반전인데, 많은 분들이 포크와 브랜치를 혼용해서 쓰다가 협업 흐름을 망가뜨리는 경우가 꽤 있습니다.

    포크(Fork)는 타인의 저장소를 내 GitHub 계정으로 통째로 복사하는 행위입니다. 오픈소스 기여나 외부 프로젝트에 참여할 때 주로 씁니다. 반면 브랜치(Branch)는 같은 저장소 내에서 독립적인 작업 공간을 만드는 개념입니다. 같은 팀, 같은 저장소 내에서 기능별로 나눠 작업할 때 쓰죠.

    팀 내부 프로젝트라면 대부분 브랜치 전략을 씁니다. 오픈소스처럼 외부인이 기여하는 구조라면 포크 후 PR을 올리는 흐름이 일반적이에요.

    flowchart TD
        A[원본 저장소\noriginal repo] -->|Fork| B[내 계정의 복사본\nforked repo]
        B -->|git clone| C[로컬 PC]
        C -->|브랜치 생성\ngit checkout -b feature/기능명| D[작업 브랜치]
        D -->|코드 작성 후\ngit add & commit| E[로컬 커밋]
        E -->|git push origin\nfeature/기능명| F[내 원격 저장소]
        F -->|풀리퀘스트 생성| A
        A -->|리뷰 & 승인 후| G[머지 완료]
    

    흐름이 보이시나요? 포크를 쓰든 브랜치를 쓰든, 결국 풀리퀘스트가 최종 관문이 된다는 건 똑같습니다.

    풀리퀘스트 생성, 이렇게 하면 됩니다

    💡 브랜치에서 커밋을 올린 뒤 GitHub 웹에서 “Compare & pull request” 버튼을 누르는 것만으로 PR이 시작됩니다.

    실제 순서를 단계별로 따라가 보겠습니다.

    1. 브랜치 생성: git checkout -b feature/login-button 처럼 기능 이름을 붙인 브랜치를 만듭니다.
    2. 작업 및 커밋: 코드를 수정하고 git add .git commit -m "로그인 버튼 UI 추가".
    3. 원격 저장소에 푸시: git push origin feature/login-button.
    4. GitHub에서 PR 생성: 저장소 페이지 상단에 “Compare & pull request” 버튼이 뜨면 클릭. 안 뜨면 Pull requests 탭 → New pull request.
    5. PR 제목과 설명 작성: 여기가 진짜 중요합니다. 아래에서 따로 다룰게요.

    잠깐, 이건 꼭 알아야 해요. PR 제목과 설명은 코드보다 먼저 읽힙니다. 리뷰어 입장에서 “이 PR이 왜 필요한지”, “어떤 변경이 있는지”를 한눈에 파악할 수 있어야 하거든요. 대충 “기능 추가”라고만 써놓으면 리뷰어가 코드를 전부 읽어야 하는 상황이 됩니다. 팀원에게 민폐가 되는 거죠.

    좋은 PR 설명의 구성은 대략 이렇습니다.

    • 변경 이유: 왜 이 작업을 했는가
    • 변경 내용 요약: 무엇을 어떻게 바꿨는가
    • 테스트 방법: 어떻게 확인할 수 있는가
    • 스크린샷 (UI 변경 시): 직관적인 이해를 도움

    이거 처음에 면찮아 보여도 습관 들이면 본인이 제일 편합니다. 나중에 “내가 왜 이걸 만들었더라?” 할 때 PR 히스토리 보면 다 나오거든요.

    리뷰 프로세스: 받는 것도, 주는 것도 기술입니다

    💡 코드 리뷰는 코드를 평가하는 게 아니라 더 나은 코드를 함께 만들어가는 대화입니다.

    PR을 올리면 팀원이 코드를 검토하고 코멘트를 남깁니다. GitHub에서는 특정 줄을 클릭해서 인라인 코멘트를 달 수 있어요. 리뷰어는 최종적으로 세 가지 중 하나를 선택합니다.

    리뷰 상태 의미 다음 행동
    Approve 승인. 머지해도 좋다. PR 작성자가 머지 진행
    Request changes 수정 요청. 이 상태로는 머지 불가. 수정 후 다시 리뷰 요청
    Comment 의견 제시. 승인/거절 아님. 논의 후 반영 여부 결정

    Request changes를 받았을 때 기분이 상하는 분들이 꽤 있는데요. 사실 이건 “네 코드가 형편없어”가 아니라 “같이 더 좋게 만들어보자”에 더 가깝습니다. 오픈소스 프로젝트에서 베테랑 개발자들도 서로 수정 요청을 주고받는 건 일상입니다.

    그런데 말이에요, 리뷰를 주는 입장도 꽤 신경 써야 합니다. “이거 왜 이렇게 했어요?”보다 “이 부분을 이렇게 바꾸면 성능이 개선될 것 같아요, 어떻게 생각하세요?”처럼 제안형으로 쓰는 게 협업 분위기에 훨씬 좋습니다. 팀 프로젝트는 결국 사람 사이의 관계니까요.

    수정 요청을 반영했다면 같은 브랜치에 새 커밋을 추가하고 다시 푸시하면 됩니다. 기존 PR에 자동으로 반영되니까 새 PR을 만들 필요가 없습니다.

    머지와 충돌 해결, 겁먹지 않아도 됩니다

    💡 충돌(Conflict)은 두 브랜치가 같은 파일의 같은 줄을 다르게 수정했을 때 발생합니다. Git이 어느 쪽을 선택할지 모르기 때문에 사람이 직접 결정해야 합니다.

    승인이 완료된 PR은 머지(Merge)할 수 있습니다. GitHub에서는 머지 방식이 세 가지입니다.

    • Merge commit: 기본값. 브랜치 히스토리가 그대로 보존됩니다.
    • Squash and merge: 여러 커밋을 하나로 합쳐서 main에 추가. 히스토리가 깔끔해집니다.
    • Rebase and merge: 커밋을 main 위에 순서대로 올립니다. 선형 히스토리 유지.

    팀마다 선호하는 방식이 다르니 처음 프로젝트 합류 시 팀 컨벤션을 꼭 물어보는 게 좋습니다. (이건 진짜 꿀팁)

    아 그리고, 충돌 문제. 처음 Conflict 메시지를 보면 당황스럽지만 구조만 알면 별거 없습니다.

    sequenceDiagram
        participant A as 개발자A의 브랜치
        participant M as main 브랜치
        participant B as 개발자B의 브랜치
    
        A->>M: 먼저 머지 완료
        B->>M: PR 생성 시도
        M-->>B: ⚠️ Conflict 발생!
        Note over B: git fetch origingit merge origin/main
        B->>B: 충돌 파일 직접 수정
        B->>M: 충돌 해결 후 다시 푸시
        M-->>B: ✅ 머지 가능 상태
    

    충돌이 난 파일을 열면 이런 표시가 보입니다.

    <<<<<<< HEAD 아래는 현재 브랜치의 코드, ======= 아래는 병합하려는 브랜치의 코드, >>>>>>> 이후가 상대 브랜치 이름입니다. 둘 중 맞는 쪽을 남기거나 둘 다 조합해서 저장하면 됩니다. 그 다음 다시 커밋하면 충돌 해결 완료입니다.

    지난주에 사이드 프로젝트에서 이 상황을 직접 겪었는데, 겁먹지 않고 파일 열어서 구분선 찾아서 수정하니까 5분 만에 해결됐습니다. 처음이 어렵지, 한 번만 해보면 “별거 아니네” 하게 됩니다.

    PR 기반 협업, 이게 왜 중요한가

    결국 풀리퀘스트 문화의 핵심은 모든 변경이 검토를 거친다는 원칙입니다. main 브랜치에 직접 push하는 팀과, PR을 통해 리뷰를 거치는 팀의 코드 품질은 시간이 지날수록 차이가 납니다. 이건 데이터 볼 필요도 없이 현장에서 체감하게 됩니다.

    혹시 지금 팀 프로젝트에서 PR 없이 작업하고 있다면, 오늘부터라도 브랜치 전략을 도입해보는 건 어떨까요? 처음엔 번거롭게 느껴질 수 있지만, 나중에 “왜 이 코드가 이렇게 됐지?” 하는 상황이 훨씬 줄어듭니다.

    포크, 브랜치, 커밋, 푸시, PR, 리뷰, 머지. 이 일곱 단계가 이제 자연스럽게 머릿속에 그려진다면, 여러분은 이미 팀 협업의 기본 흐름을 익힌 겁니다.


    관련 글 더 보기

    전체 가이드로 돌아가기: 깃허브 사용법: 초보자를 위한 Git과 GitHub 완벽 튜토리얼

  • Git 기초: 설치 및 환경 설정

    코딩을 처음 배우기 시작하면 반드시 마주치는 첫 번째 벽이 있습니다. 바로 깃 사용법입니다. 저도 처음엔 “이걸 왜 써야 하지?” 싶었어요. 그냥 파일 저장하면 안 되나 싶었는데, 막상 써보니 이게 없으면 개발 자체가 굉장히 불편해지더라고요.

    주변에서 코딩을 배우다 초반에 포기한 분들 이야기를 들어보면, Git을 제대로 설정하지 못해서 시작도 못 하고 접은 경우가 생각보다 많습니다. 진짜예요. 설치 단계에서 막혀서요.

    이 글에서는 Git 설치부터 기본 환경 설정까지, 완전히 처음 시작하는 분들 기준으로 하나씩 짚어드리겠습니다.

    Git이 뭔지, 왜 필요한가요?

    💡 Git은 코드의 변경 이력을 저장하는 도구입니다. 파일이 망가져도 언제든 과거로 돌아갈 수 있어요.

    쉽게 말하면 코드용 타임머신입니다. 수정하다가 완전히 망쳤을 때, Git이 있으면 “어제 버전으로 돌아가!” 하고 복구할 수 있어요. 없으면? 그냥 망한 거예요.

    제가 처음 웹 개발을 배우던 시기에, 한 번은 CSS 파일을 잘못 건드려서 사이트가 통째로 깨진 적이 있었어요. 백업도 없었고요. 그때 Git을 알았더라면 5분 안에 해결했을 텐데, 그날 밤을 꼬박 새웠습니다. 진짜 뼈아픈 경험이었어요.

    그런데 말이에요, Git은 그냥 개인 백업 용도에서 그치지 않습니다. 여러 사람이 같은 코드를 동시에 수정할 때도 충돌 없이 관리할 수 있어요. 그래서 회사에서도, 오픈소스 프로젝트에서도, 사이드 프로젝트에서도 기본으로 씁니다.

    Git 다운로드 및 설치 방법

    💡 운영체제에 맞는 설치 방법이 다릅니다. 아래 표를 참고해 본인 환경에 맞게 설치하세요.

    잠깐, 이건 꼭 알아야 해요. Git은 공식 홈페이지(git-scm.com)에서 무료로 다운로드할 수 있습니다. 근데 운영체제마다 설치 방법이 조금씩 달라요.

    운영체제 설치 방법 확인 명령어
    Windows git-scm.com에서 .exe 설치 파일 다운로드 후 실행 git –version
    macOS 터미널에서 brew install git 또는 Xcode Command Line Tools git –version
    Ubuntu/Debian 터미널에서 sudo apt install git 입력 git –version

    Windows 사용자분들께 특히 드리고 싶은 말이 있어요. 설치 중에 “Adjusting your PATH environment” 옵션이 나오면 반드시 “Git from the command line and also from 3rd-party software”를 선택하세요. 기본값으로 두면 나중에 VSCode 같은 편집기에서 Git을 못 찾는 상황이 생깁니다. 솔직히 이 부분에서 저도 한 번 헤맸어요.

    설치가 끝났다면 터미널(또는 명령 프롬프트)을 열고 git –version을 입력해보세요. “git version 2.xx.x” 이런 식으로 버전 번호가 나오면 성공입니다. 아무것도 안 뜨거나 에러가 난다면 설치가 제대로 안 된 거예요.

    flowchart TD
        A[git-scm.com 접속] --> B{운영체제 선택}
        B --> |Windows| C[.exe 파일 다운로드]
        B --> |macOS| D[Homebrew 또는 Xcode]
        B --> |Linux| E[apt 패키지 설치]
        C --> F[설치 마법사 실행]
        D --> F
        E --> F
        F --> G[git --version 입력]
        G --> H{버전이 출력되나요?}
        H --> |예| I[설치 완료]
        H --> |아니오| J[PATH 설정 재확인]
    

    Git 계정 설정하기 (이름과 이메일)

    💡 Git 설치 후 이름과 이메일을 반드시 등록해야 커밋 기록에 내 정보가 제대로 남습니다.

    여기서 반전인데, 많은 초보자들이 Git 설치하고 바로 쓰려다가 “왜 내 이름이 안 뜨지?” 하고 당황합니다. 이유는 간단합니다. 이름과 이메일을 아직 설정 안 해서입니다.

    터미널에서 아래 두 줄을 입력하세요.

    • 이름 설정: git config –global user.name “내이름”
    • 이메일 설정: git config –global user.email “내이메일@example.com”

    💡 이메일은 나중에 GitHub 계정과 연결할 거니까, GitHub 가입 시 쓸 이메일과 동일하게 입력하는 게 좋습니다.

    –global 옵션은 “이 컴퓨터에서 Git을 쓸 때 항상 이 설정을 사용하겠다”는 의미입니다. 특정 프로젝트에만 다른 설정을 적용하고 싶다면 –global을 빼면 돼요. 처음엔 그냥 –global 쓰는 게 훨씬 편합니다.

    아 그리고, 이름은 꼭 실명이 아니어도 됩니다. 닉네임도 괜찮아요. 다만 협업 상황에서 “이 코드 누가 작성했어요?” 할 때 본인인 걸 알 수 있도록 설정해두면 나중에 편합니다.

    주변에 개발을 막 시작한 10대 후반 친구가 있었는데, 이 단계에서 이메일을 임시로 넣었다가 나중에 GitHub 연동할 때 계정이 안 맞아서 고생했어요. 처음부터 제대로 설정해두는 게 훨씬 이득입니다.

    설정 확인 및 Git 버전 업데이트

    💡 git config –list 명령어 하나로 현재 설정된 모든 Git 환경 정보를 한 번에 확인할 수 있습니다.

    설정을 마쳤으면 제대로 됐는지 확인해봐야겠죠. 아 그리고, 버전 확인도 이 타이밍에 같이 해두면 좋습니다.

    • 전체 설정 확인: git config –list
    • 이름만 확인: git config user.name
    • 이메일만 확인: git config user.email
    • 현재 버전 확인: git –version

    git config –list를 치면 내용이 쭉 나오는데, 겁먹지 않아도 됩니다. 그 중에서 user.name이랑 user.email이 내가 입력한 대로 나오면 완벽하게 설정된 거예요.

    참고로 Git은 꽤 자주 업데이트됩니다. 지난 주말에 확인해봤더니 버전이 2.47 이상까지 올라와 있더라고요. 최신 버전을 유지하면 보안 취약점 패치도 받고, 새 기능도 활용할 수 있으니 가끔씩 업데이트해주세요.

    Windows는 git-scm.com에서 최신 버전을 다시 받아 설치하면 되고, macOS는 brew upgrade git이면 됩니다. Linux는 sudo apt upgrade git으로 해결돼요. 간단하죠?

    이 과정에서 막히는 부분이 있으신가요? 처음엔 터미널 자체가 낯설어서 명령어 치는 것 자체가 무서울 수 있어요. 이거 저만 그런 건 아닐 거예요. 천천히 하나씩 따라 해보시면 금방 익숙해집니다. 진짜예요.

    mindmap
      root((Git 초기 설정))
        설치
          Windows .exe
          macOS Homebrew
          Linux apt
        계정 설정
          user.name
          user.email
          global 옵션
        확인 방법
          git --version
          git config --list
        업데이트
          정기적 최신화
          보안 패치 수신
    

    관련 글 더 보기

    전체 가이드로 돌아가기: 깃허브 사용법: 초보자를 위한 Git과 GitHub 완벽 튜토리얼

  • Git 명령어 기초와 버전 관리

    혼자서 처음으로 코드를 짜기 시작했을 때, 누구나 한 번쯤 이런 상황을 겪습니다. “잘 되던 코드가 갑자기 안 돼. 뭘 고쳤더라?” 그 순간 머릿속이 하얘지죠. Git 명령어를 알았더라면 이런 공포가 없었을 겁니다.

    이 글은 Git을 처음 쓰는 분들이 실제로 프로젝트를 혼자 시작할 때 가장 많이 쓰는 명령어들만 골라서 설명합니다. 이론 말고, 바로 써먹을 수 있는 것들로요.

    저장소 시작하기: git init과 git add

    💡 git init으로 Git을 시작하고, git add로 저장할 파일을 선택합니다. 이 두 명령어가 버전 관리의 시작입니다.

    프로젝트 폴더에서 터미널을 열고 처음 입력하는 명령어가 바로 git init입니다. 이걸 치면 폴더 안에 .git이라는 숨김 폴더가 생겨요. 여기에 모든 변경 이력이 저장됩니다.

    근데 말이에요, git init을 한다고 해서 파일이 자동으로 Git에 저장되는 건 아닙니다. “어떤 파일을 저장할 거야?”를 Git에게 알려주는 과정이 따로 필요해요. 그게 바로 git add입니다.

    • git init — 현재 폴더를 Git 저장소로 초기화
    • git add 파일명 — 특정 파일을 저장 대상으로 지정
    • git add . — 현재 폴더의 모든 파일을 저장 대상으로 지정

    제가 처음 git add .를 배웠을 때, 점(.)이 “현재 폴더 전체”를 의미한다는 걸 몰라서 왜 이게 되나 한참 헷갈렸어요. (이건 진짜 초보 시절 얘기예요.) 이제는 너무 당연한 거지만요.

    혹시 “git add를 했는데 아무것도 안 일어나는 것 같아요”라고 느끼시는 분? 맞아요. git add는 눈에 보이는 변화가 없어요. 그냥 “내가 이 파일들을 저장할 준비가 됐어”라고 목록에 올려두는 것뿐입니다. 실제 저장은 다음 단계에서 이루어집니다.

    변경 사항 저장하기: git commit

    💡 git commit은 add로 선택한 파일들을 실제로 저장하는 명령어입니다. 메시지를 꼭 남겨야 나중에 무슨 작업이었는지 알 수 있습니다.

    잠깐, 이건 꼭 알아야 해요. git commit은 단순히 저장하는 게 아닙니다. 하나의 의미 있는 작업 단위를 기록하는 것입니다. 나중에 “3일 전에 뭘 바꿨더라?”를 확인할 때 이 기록이 생명줄이 됩니다.

    기본 문법은 이렇습니다.

    • git commit -m “메시지 내용”

    메시지는 짧고 명확하게 쓰는 게 좋습니다. “수정함”, “고침” 같은 말은 의미가 없어요. 대신 “로그인 버튼 클릭 시 오류 수정”, “메인 페이지 레이아웃 변경” 이런 식으로 써두면 나중에 한눈에 파악됩니다.

    주변에서 개발을 막 배우기 시작한 20대 초반 분이 “커밋 메시지가 귀찮아서 그냥 ‘1’, ‘2’, ‘3’으로 남겼더니 나중에 뭐가 뭔지 몰라서 전부 다시 짰다”고 했어요. 웃프지만 이게 현실입니다. 처음부터 습관 들이는 게 훨씬 이득이에요.

    나쁜 커밋 메시지 좋은 커밋 메시지
    수정 회원가입 폼 유효성 검사 추가
    1 메인 페이지 배너 이미지 교체
    asdf 결제 API 연동 오류 수정
    README 초기 작성

    변경 사항 확인하기: git status와 git diff

    💡 git status로 어떤 파일이 변경됐는지 확인하고, git diff로 구체적으로 무엇이 바뀌었는지 볼 수 있습니다.

    아 그리고, 이 두 명령어는 거의 매일 쓰게 될 거예요. 특히 “내가 지금 뭘 바꿨더라?” 싶을 때 바로 쓰는 명령어입니다.

    • git status — 현재 저장소 상태 확인 (어떤 파일이 수정됐는지, add됐는지)
    • git diff — add 전 파일의 구체적인 변경 내용 확인
    • git diff –staged — add 이후 commit 전 변경 내용 확인

    git status를 치면 빨간색과 초록색 글씨가 나옵니다. 빨간색은 “아직 add 안 한 파일”, 초록색은 “add 해서 commit 준비된 파일”이에요. 처음엔 헷갈릴 수 있는데, 색깔 기억해두면 금방 익숙해집니다.

    git diff는 실제로 줄 단위로 뭐가 바뀌었는지 보여줍니다. 추가된 줄은 + 표시, 삭제된 줄은 – 표시로 나와요. 솔직히 처음 보면 뭔지 모르겠는데, 두세 번 써보면 바로 읽힙니다.

    브랜치 생성과 전환, 그리고 히스토리 확인

    💡 브랜치는 메인 코드를 건드리지 않고 새로운 작업을 시도할 수 있는 복사본 같은 개념입니다.

    여기서 반전인데, 브랜치는 처음엔 “이게 왜 필요하지?” 싶지만 한 번 쓰고 나면 없으면 못 삽니다.

    예를 들어 “새로운 기능을 추가해봐야 하는데, 원본은 건드리기 싫어”라는 상황에서 브랜치를 만들면 됩니다. 원본은 그대로 두고 새 브랜치에서 마음껏 실험할 수 있어요.

    • git branch 브랜치명 — 새 브랜치 생성
    • git checkout 브랜치명 — 해당 브랜치로 이동
    • git checkout -b 브랜치명 — 생성과 이동을 동시에
    • git log — 커밋 히스토리 전체 확인
    • git log –oneline — 한 줄씩 간결하게 확인

    git log –oneline은 특히 자주 쓰게 될 거예요. 커밋 내역을 한 줄씩 깔끔하게 보여주거든요. 히스토리가 길어졌을 때 한눈에 파악하기 좋습니다.

    gitGraph
       commit id: "초기 프로젝트 생성"
       commit id: "메인 페이지 레이아웃 작성"
       branch feature/login
       checkout feature/login
       commit id: "로그인 폼 추가"
       commit id: "로그인 유효성 검사"
       checkout main
       commit id: "README 업데이트"
       merge feature/login id: "로그인 기능 병합"
    

    이게 실제 브랜치 흐름을 시각화한 거예요. main 브랜치를 건드리지 않고 feature/login 브랜치에서 작업한 뒤 나중에 합치는 방식입니다. 혼자 작업해도 이렇게 관리하면 나중에 어떤 기능을 언제 추가했는지 한눈에 보입니다.

    Git 명령어 처음 배울 때 가장 헷갈리는 게 init → add → commit의 흐름인데, 이 세 가지만 확실히 잡으면 나머지는 자연스럽게 따라옵니다. 이거 저만 어렵게 느꼈던 건 아닐 거예요. 분명 공감하실 분들 계실 겁니다.


    관련 글 더 보기

    전체 가이드로 돌아가기: 깃허브 사용법: 초보자를 위한 Git과 GitHub 완벽 튜토리얼

  • GitHub 초기 설정 및 저장소 생성

    깃허브 사용법을 검색해서 이 글을 찾아오셨다면, 아마 팀 프로젝트를 앞두고 있거나 포트폴리오를 만들어야 하는 상황일 겁니다. 맞죠? GitHub는 이제 개발자의 이력서라고 해도 과언이 아니에요. 면접관들이 GitHub 프로필을 직접 확인하는 시대입니다.

    근데 처음 GitHub를 시작할 때 “계정은 만들었는데 이걸 어떻게 써요?”라는 막막함이 있어요. 그 느낌 압니다. 저도 처음에 저장소(Repository)가 뭔지도 모르고 버튼만 누르다가 한참 헤맸으니까요.

    이 글에서는 GitHub 계정 생성부터 저장소 만들기, 로컬 코드를 GitHub에 올리는 방법까지 단계별로 설명드리겠습니다.

    GitHub 계정 생성 및 기본 설정

    💡 GitHub 계정은 개발자의 온라인 포트폴리오 공간입니다. 처음 만들 때 사용자명을 신중하게 정하는 게 좋습니다.

    github.com에 접속해서 Sign up을 누르면 됩니다. 이메일, 비밀번호, 사용자명(username)을 입력하면 끝이에요. 근데 말이에요, 사용자명은 한 번 정하면 바꾸기 꽤 불편합니다. 그래서 처음부터 잘 정해두는 게 중요해요.

    이상적인 GitHub 사용자명 기준을 몇 가지 정리하면:

    • 실명 기반이거나 기억하기 쉬운 닉네임
    • 숫자나 특수문자를 너무 많이 섞지 않기
    • 다른 플랫폼 아이디와 통일하면 브랜딩에 유리

    계정을 만들고 나면 이메일 인증을 해야 정상적으로 사용할 수 있어요. 가입할 때 쓴 이메일로 인증 메일이 오는데, 그걸 클릭하면 됩니다. 간단하죠.

    참고로 이전에 Git 계정 설정할 때 입력한 이메일과 GitHub 이메일을 동일하게 맞춰두면 커밋 기록이 GitHub 프로필에 잔디(contribution)로 쌓입니다. 이게 안 맞으면 로컬에서 커밋을 아무리 열심히 해도 GitHub 프로필에 활동 기록이 안 남아요. 이 부분을 놓치면 억울하니까 꼭 확인해두세요.

    새로운 저장소(Repository) 만들기

    💡 저장소는 프로젝트 하나당 하나씩 만드는 게 기본입니다. Public으로 설정하면 누구나 볼 수 있고, Private는 나만 볼 수 있습니다.

    로그인하면 오른쪽 상단에 + 버튼이 있습니다. 거기서 “New repository”를 선택하면 저장소 생성 화면으로 넘어가요.

    잠깐, 이건 꼭 알아야 해요. 저장소 이름은 나중에 URL에 그대로 들어갑니다. github.com/내아이디/저장소이름 이런 형태로요. 그래서 의미 있는 이름으로 짓는 게 좋아요. “test123” 같은 건 나중에 포트폴리오로 보여주기 민망할 수 있으니까요.

    설정 항목 선택지 추천
    공개 여부 Public / Private 포트폴리오용은 Public
    README 초기화 Add a README file 체크 처음엔 체크 해제 추천
    .gitignore 언어/프레임워크 선택 사용 언어에 맞게 선택
    라이선스 MIT / Apache 등 오픈소스라면 MIT 추천

    README 초기화 옵션에 대해 조금 더 설명할게요. 처음 시작할 때 “Add a README file”을 체크하면 GitHub에서 자동으로 README.md 파일이 생깁니다. 근데 이미 로컬에 코드가 있다면 이 옵션을 체크하지 않는 게 좋아요. 나중에 로컬 코드를 올릴 때 충돌이 날 수 있거든요. 솔직히 이 부분은 저도 처음에 체크했다가 한 번 꼬인 적 있어요.

    로컬 저장소를 GitHub에 연결하기

    💡 로컬에서 만든 Git 저장소와 GitHub의 원격 저장소를 연결해야 코드를 업로드할 수 있습니다.

    여기서 반전인데, 이 단계가 처음엔 제일 어렵게 느껴지지만 실제로는 명령어 두세 줄이면 됩니다. 겁먹지 않아도 돼요.

    GitHub에서 저장소를 만들면 페이지 하단에 이런 안내가 나옵니다. “…or push an existing repository from the command line” 이 부분을 그대로 복사해서 터미널에 붙여넣으면 됩니다. 명령어를 외울 필요도 없어요.

    그래도 내용이 뭔지 알아야 하니까 설명하면:

    • git remote add origin [URL] — 로컬 저장소에 GitHub 주소를 “origin”이라는 이름으로 등록
    • git branch -M main — 기본 브랜치 이름을 main으로 변경
    • git push -u origin main — 로컬 코드를 GitHub에 업로드

    처음 push할 때 GitHub 로그인 정보를 요구할 수 있습니다. 요즘은 비밀번호 방식이 아니라 Personal Access Token(PAT)을 써야 해요. GitHub → Settings → Developer Settings → Personal access tokens에서 만들 수 있습니다. 이 토큰을 비밀번호 입력란에 붙여넣으면 됩니다.

    sequenceDiagram
        participant L as 로컬 컴퓨터
        participant G as GitHub
        L->>L: git init
        L->>L: git add .
        L->>L: git commit -m "초기 커밋"
        L->>G: git remote add origin [URL]
        L->>G: git push -u origin main
        G-->>L: 업로드 완료
        Note over G: GitHub 저장소에코드가 올라갑니다
    

    README 파일 추가하고 꾸미기

    💡 README.md는 저장소의 첫 인상입니다. 프로젝트 설명, 실행 방법, 기술 스택을 담아두면 협업자나 면접관에게 좋은 인상을 줍니다.

    아 그리고, README는 생각보다 중요합니다. GitHub 저장소 메인 화면에서 가장 먼저 보이는 게 README거든요. 이게 잘 정리돼 있는 저장소와 아무것도 없는 저장소는 인상이 완전히 다릅니다.

    README.md 파일을 로컬에서 만들고 기본 내용을 채워보세요.

    • 프로젝트 이름과 한 줄 설명
    • 어떤 기술을 사용했는지 (기술 스택)
    • 어떻게 실행하는지 (설치 방법, 실행 명령어)
    • 스크린샷이나 데모 링크 (있다면)

    저는 올해 초에 팀 프로젝트 준비를 하면서 GitHub 저장소를 처음으로 제대로 꾸며봤는데, README 하나 잘 만들었더니 팀원들 반응이 완전히 달라졌어요. “이거 진짜 포트폴리오 같다”는 말을 들었을 때 뿌듯하더라고요.

    README.md를 로컬에서 작성했으면 이제 다시 add → commit → push 순서로 올리면 됩니다.

    1. git add README.md
    2. git commit -m “README 초기 작성”
    3. git push

    GitHub 저장소 페이지를 새로고침하면 README 내용이 바로 보일 거예요. 처음 이 화면을 봤을 때 뭔가 진짜 개발자가 된 것 같은 느낌이 들었어요. 이 기분, 여러분도 곧 느끼실 겁니다.

    혹시 아직 “이게 다 뭔 소리야” 싶은 부분이 있으신가요? 처음엔 당연히 낯설 수 있습니다. 근데 딱 한 번만 처음부터 끝까지 따라 해보면, 두 번째부터는 자연스럽게 손이 갑니다. 깃허브 사용법은 결국 반복이에요.


    관련 글 더 보기

    전체 가이드로 돌아가기: 깃허브 사용법: 초보자를 위한 Git과 GitHub 완벽 튜토리얼

  • 깃허브 사용법: 초보자를 위한 Git과 GitHub 완벽 튜토리얼

    코드를 처음 작성했을 때 기억나시나요? 열심히 만든 파일을 실수로 덮어쓰고, 어떤 버전이 최신인지 몰라서 파일명에 “최최최종_진짜최종_이게맞음.zip”을 붙여본 경험, 한 번쯤 있으실 겁니다.

    진짜예요. 저도 그랬으니까요. 처음 개발 공부를 시작했을 때 Git이라는 단어를 들으면 괜히 겁부터 났습니다. 명령어가 외계어처럼 보였고, GitHub는 “개발자들만 쓰는 뭔가 어려운 것”이라는 인식이 있었어요. 그런데 막상 써보니 달랐습니다.

    Git과 GitHub를 제대로 익히면 버전 관리 걱정은 사라지고, 팀 협업이 눈에 띄게 편해집니다. 이 가이드는 그 첫걸음을 도와드리기 위한 글입니다. 설치부터 협업 워크플로까지, 단계별로 정리해 두었으니 필요한 섹션부터 읽으셔도 됩니다.

    목차

    1. Git 기초: 설치 및 환경 설정
    2. Git 명령어 기초와 버전 관리
    3. GitHub 초기 설정 및 저장소 생성
    4. 협업 워크플로와 풀리퀘스트 사용법

    Git 기초: 설치 및 환경 설정

    💡 Git은 컴퓨터에 설치하는 버전 관리 도구입니다. 설치가 반이에요.

    Git을 처음 접하는 분들이 가장 많이 막히는 부분이 바로 환경 설정입니다. 운영체제마다 설치 방법이 조금 다르고, 처음 보는 터미널 화면에 당황하는 경우가 많습니다. 솔직히 이 부분은 저도 처음엔 좀 헷갈렸어요.

    Windows, macOS, Linux 각각 설치 방법이 다르고, 설치 후 사용자 이름과 이메일을 등록하는 초기 설정도 빠뜨리면 나중에 문제가 생깁니다. 처음 한 번만 제대로 해두면 그 이후는 훨씬 수월합니다.

    그런데 말이에요, 설치보다 더 중요한 게 있습니다. 바로 Git이 실제로 어떤 방식으로 파일을 추적하는지를 개념적으로 이해하는 것입니다. 이 개념이 잡혀야 이후 명령어가 왜 그렇게 생겼는지 납득이 됩니다. 단순 암기가 아닌 이해로 접근하면 훨씬 오래 기억할 수 있어요.

    자세히 읽어보기: Git 기초: 설치 및 환경 설정

    Git 명령어 기초와 버전 관리

    💡 init, add, commit 세 개만 익혀도 혼자 쓰는 버전 관리는 바로 시작할 수 있습니다.

    Git을 배운다는 건 결국 명령어를 익히는 일입니다. 근데 전부 외울 필요는 없어요. 실제로 자주 쓰는 명령어는 생각보다 많지 않습니다. 제가 지난달에 직접 정리해 봤는데, 일상적인 개인 프로젝트에서는 10개 미만의 명령어로 대부분 해결됩니다.

    핵심은 세 단계입니다. 작업 디렉토리 → 스테이징 영역 → 로컬 저장소. 이 흐름을 이해하면 git addgit commit이 왜 분리되어 있는지 자연스럽게 납득이 됩니다. 처음엔 “왜 두 번이나 해야 돼?” 싶었는데, 써보니 이 구조가 꽤 유용합니다.

    아 그리고, 브랜치 개념도 여기서 함께 다룹니다. 브랜치는 실험적인 작업을 메인 코드와 분리해서 진행할 수 있게 해주는 기능인데요. 망해도 괜찮은 브랜치를 하나 만들어놓고 마음껏 수정하고, 잘 되면 합치는 방식입니다. 이게 Git의 가장 큰 장점 중 하나예요.

    자세히 읽어보기: Git 명령어 기초와 버전 관리

    Git과 GitHub의 핵심 개념 비교

    💡 Git은 도구, GitHub는 그 도구를 쓰는 온라인 플랫폼입니다. 둘은 다릅니다.

    이 부분에서 많은 분들이 혼동하십니다. Git과 GitHub는 이름이 비슷하지만 본질적으로 다릅니다.

    구분 Git GitHub
    형태 소프트웨어 (로컬 설치) 온라인 플랫폼 (웹 서비스)
    주요 역할 버전 관리, 히스토리 추적 저장소 호스팅, 협업 관리
    인터넷 필요 불필요 (오프라인 작업 가능) 필요
    대안 SVN, Mercurial GitLab, Bitbucket
    설치 위치 내 컴퓨터 브라우저/클라우드

    간단히 말하면, Git 없이 GitHub를 쓰기는 어렵습니다. 반대로 Git만으로도 혼자 쓰는 버전 관리는 충분히 가능하고요. 두 개를 함께 쓸 때 진가가 발휘됩니다. 팀 프로젝트라면 특히요.

    혹시 이 차이가 아직 헷갈리신다면, 아래 섹션들을 순서대로 읽으시면 자연스럽게 정리될 겁니다.

    GitHub 초기 설정 및 저장소 생성

    💡 저장소 하나 만드는 것만으로도 포트폴리오의 시작이 됩니다.

    GitHub 계정을 만들고 나서 처음 저장소(Repository)를 생성할 때, 막막하게 느껴지는 분들이 많습니다. Public으로 해야 하나 Private으로 해야 하나, README는 뭐고 .gitignore는 왜 선택하라는 건지. 옵션이 많으면 오히려 시작이 어렵죠.

    잠깐, 이건 꼭 알아야 해요. GitHub의 저장소는 크게 두 종류입니다. Public(공개)Private(비공개). 개인 학습용이나 포트폴리오 목적이라면 Public이 유리합니다. 채용 담당자나 협업 파트너가 바로 볼 수 있거든요. 반면 회사 업무나 개인 프로젝트라면 Private으로 관리하세요.

    로컬 Git 저장소와 GitHub 원격 저장소를 연결하는 과정도 여기서 다룹니다. git remote add origin 명령어가 바로 그 연결 다리 역할을 합니다. 이 과정을 한 번 직접 해보면 생각보다 간단하다는 걸 느끼실 거예요.

    자세히 읽어보기: GitHub 초기 설정 및 저장소 생성

    협업 워크플로와 풀리퀘스트 사용법

    💡 풀리퀘스트(PR)는 “내 코드 검토해주세요”라고 팀원에게 공식 요청하는 방법입니다.

    이 부분이 Git과 GitHub를 배우는 진짜 이유라고 해도 과언이 아닙니다. 혼자 쓰는 버전 관리에서 팀 협업으로 넘어가는 순간이거든요.

    제 주변의 한 개발자 지인은 처음 팀 프로젝트에 투입됐을 때 PR 개념을 몰라서 실수를 한 적이 있다고 했습니다. 직접 main 브랜치에 코드를 push해서 팀 전체 작업이 꼬여버린 거예요. 이후로 그 분은 브랜치 전략과 PR 프로세스를 정말 꼼꼼히 익혔다고 합니다. (이건 진짜 흔한 실수예요)

    협업 워크플로의 핵심은 간단합니다.

    • 메인 브랜치는 항상 안정된 코드만 유지
    • 새 기능이나 수정은 별도 브랜치에서 작업
    • 작업 완료 후 PR을 통해 코드 리뷰 요청
    • 팀원 승인 후 메인 브랜치에 병합(Merge)

    이 흐름을 익히면 오픈소스 프로젝트에 기여하는 것도 어렵지 않습니다. GitHub에서 가장 많이 쓰이는 협업 방식이기도 하고요.

    flowchart LR
        A[로컬 브랜치 생성] --> B[코드 작성 및 커밋]
        B --> C[GitHub에 Push]
        C --> D[풀리퀘스트 생성]
        D --> E[팀원 코드 리뷰]
        E --> F{승인 여부}
        F -->|승인| G[main 브랜치에 Merge]
        F -->|수정 요청| B
        G --> H[브랜치 삭제]
    

    자세히 읽어보기: 협업 워크플로와 풀리퀘스트 사용법

    자주 묻는 질문 (FAQ)

    Git과 GitHub의 차이점은 무엇인가요?

    Git은 컴퓨터에 설치하는 버전 관리 소프트웨어입니다. 인터넷 없이도 로컬에서 코드 히스토리를 추적하고 브랜치를 관리할 수 있습니다. 반면 GitHub는 Git 저장소를 온라인에 올려두고 다른 사람들과 공유하거나 협업할 수 있게 해주는 웹 플랫폼입니다. 쉽게 말하면, Git이 도구라면 GitHub는 그 도구로 작업한 결과물을 보관하고 공유하는 공간입니다. Git 없이 GitHub만 쓸 수는 없지만, GitHub 없이 Git만 쓰는 것은 가능합니다.

    로컬 저장소와 원격 저장소는 어떻게 다릅니까?

    로컬 저장소는 내 컴퓨터에 존재하는 Git 저장소입니다. 인터넷 연결 없이 작업하고, 커밋하고, 브랜치를 관리할 수 있습니다. 원격 저장소는 GitHub 같은 온라인 플랫폼에 올라가 있는 저장소입니다. 팀원들과 코드를 공유하거나 백업 용도로 사용합니다. 로컬에서 작업한 내용을 git push로 원격에 올리고, 원격의 최신 내용을 git pull로 내려받는 방식으로 두 저장소를 동기화합니다.

    브랜치가 충돌할 경우 어떻게 해결하나요?

    브랜치 충돌(Merge Conflict)은 두 브랜치에서 같은 파일의 같은 부분을 서로 다르게 수정했을 때 발생합니다. 겁먹을 필요 없어요. Git은 충돌이 발생한 위치를 파일 안에 명확하게 표시해줍니다. <<<<<<<, =======, >>>>>>> 기호로 구분된 부분이 바로 충돌 구간입니다. 두 버전 중 어느 것을 유지할지, 혹은 두 내용을 합칠지 직접 편집한 뒤 저장하고, 다시 git addgit commit을 실행하면 됩니다. VS Code 같은 에디터는 충돌 해결 UI를 제공하기 때문에 훨씬 편하게 처리할 수 있습니다.

    마무리하며

    Git과 GitHub는 처음 접하면 낯설고 복잡해 보이지만, 핵심 개념 몇 가지만 잡히면 생각보다 빠르게 익숙해집니다. 설치와 환경 설정부터 시작해서 명령어, 저장소 생성, 협업 워크플로까지 단계별로 차근차근 따라오시면 됩니다.

    위에 정리된 각 서브 포스트는 하나하나 독립적으로 읽을 수 있도록 구성되어 있습니다. 막히는 부분이 생기면 해당 글로 돌아와서 다시 확인하시면 됩니다. 처음부터 전부 외우려 하지 않아도 됩니다. 써보면서 익히는 게 훨씬 빠르거든요.

    오늘 배운 내용이 실제 프로젝트에서 도움이 되길 바랍니다.

  • 리눅스 입문: 윈도우 사용자를 위한 완벽 가이드

    윈도우만 쓰다가 처음 리눅스를 접했을 때 솔직히 좀 당황했습니다. 마우스 클릭 몇 번으로 모든 걸 해결하던 환경에서 갑자기 까만 화면에 명령어를 입력해야 한다니. “이게 진짜 현대 운영체제가 맞나?” 싶었어요.

    근데 이런 낯섦 때문에 많은 분들이 리눅스의 문 앞에서 그냥 돌아서곤 합니다. 아까운 일이에요. 리눅스를 조금만 익히면 윈도우에서는 상상도 못 했던 자유로움과 효율성을 경험할 수 있거든요. 개발자 취업을 준비하는 분들, 서버 관리를 배우고 싶은 분들, 아니면 그냥 “나도 한번 써볼까” 하는 분들 모두에게 리눅스는 분명히 가치 있는 투자입니다.

    이 가이드는 윈도우에서 리눅스로 넘어오려는 분들을 위해 제가 직접 경험하고 정리한 내용입니다. 설치 전 배포판 선택부터 터미널 기초, WSL 활용법까지 — 처음부터 끝까지 순서대로 따라오시면 됩니다.

    목차

    1. 리눅스 배포판 선택 가이드
    2. 리눅스 기본 명령어 정리
    3. 리눅스 터미널 사용법
    4. 윈도우에서 리눅스 사용: WSL 설치 및 설정

    리눅스 배포판, 뭘 골라야 할까요?

    💡 초보자라면 우분투(Ubuntu) 하나면 충분합니다. 나머지는 익숙해진 다음에 탐색해도 늦지 않아요.

    리눅스를 처음 배우는 분들이 가장 많이 막히는 지점이 바로 여기입니다. “배포판이 뭐가 그렇게 많아?” 싶죠. 우분투, 페도라, 데비안, 아치, 민트… 나열하자면 끝이 없어요. 처음 접하면 마치 스마트폰 기종 고르는 것보다 더 복잡하게 느껴지기도 합니다.

    여기서 반전인데, 사실 초보자한테는 선택지가 그렇게 중요하지 않습니다. 어떤 배포판이든 리눅스의 핵심 원리는 동일하거든요. 다만 출발점을 잘못 고르면 불필요하게 고생할 수 있어서, 어떤 기준으로 배포판을 선택해야 하는지 아는 것이 중요합니다.

    제가 처음 리눅스를 설치할 때 아무 생각 없이 아치 리눅스를 골랐다가 설치 과정에서만 반나절을 날린 기억이 있어요. (지금 와서 생각하면 다 추억이지만…) 배포판 선택 기준, 초보자 추천 목록, 그리고 각 배포판의 실질적인 차이점까지 아래 글에서 자세히 다루고 있습니다.

    자세히 읽어보기: 리눅스 배포판 선택 가이드

    터미널이 두렵다면? 기본 명령어부터 시작하세요

    💡 리눅스 명령어는 외우는 게 아니라, 자주 쓰다 보면 손이 먼저 기억합니다.

    솔직히 이 부분은 저도 처음엔 꽤 막막했습니다. 윈도우에서는 파일 복사할 때 그냥 Ctrl+C, Ctrl+V면 되는데, 리눅스에서는 cpmv니 하는 명령어를 써야 한다고 하니까요. “이걸 언제 다 외워?” 싶었죠.

    근데 막상 써보면 그렇게 많지 않습니다. 실제로 일상적인 작업에서 쓰이는 명령어는 20~30개 안팎이에요. ls로 파일 목록 보고, cd로 폴더 이동하고, mkdir로 폴더 만들고. 이것만 알아도 웬만한 건 다 됩니다.

    잠깐, 이건 꼭 알아야 해요. 명령어를 외우려고 하지 말고 먼저 손으로 쳐보는 것이 훨씬 빠릅니다. 사람은 눈으로 읽는 것보다 직접 입력해봤을 때 기억에 더 오래 남거든요. 어떤 명령어가 왜 쓰이는지, 실제 예제와 함께 정리한 내용을 아래에서 확인해보세요.

    자세히 읽어보기: 리눅스 기본 명령어 정리

    리눅스 터미널, 이렇게 쓰면 진짜 빨라집니다

    💡 터미널을 잘 다루는 것과 리눅스를 잘 다루는 것은 거의 같은 말입니다.

    명령어를 하나씩 외우는 것과, 터미널 자체를 효율적으로 활용하는 것은 다른 이야기입니다. 이 차이를 이해하는 순간 생산성이 확 올라가요. 예를 들어, 탭 자동완성 기능 하나만 제대로 써도 타이핑 실수가 절반 이하로 줄어듭니다. 맞아요, 그냥 Tab 키 하나로요.

    주변에 서버 개발을 하는 지인이 있는데, 처음에 터미널을 그냥 “명령어 입력하는 창” 정도로만 알고 썼다고 해요. 히스토리 검색, 단축키, 파이프 활용을 배우고 나서 작업 속도가 체감상 3배는 빨라졌다고 하더라고요. 과장이 아니에요, 진짜로.

    아 그리고, 터미널 커스터마이징도 재미있는 부분입니다. 기본 설정이 워낙 밋밋해 보이다 보니 처음엔 그냥 쓰는 분들이 많은데, 조금만 손보면 훨씬 쓰기 편한 환경을 만들 수 있어요. 터미널 기초부터 효율적인 활용 팁까지 아래 글에서 단계별로 설명하고 있습니다.

    자세히 읽어보기: 리눅스 터미널 사용법

    리눅스 설치 없이 윈도우에서 바로 쓰는 방법: WSL

    💡 WSL은 “리눅스 입문 장벽”을 크게 낮춰준 마이크로소프트의 선물 같은 기능입니다.

    사실 리눅스를 처음 써보고 싶은데 “기존 윈도우 환경을 바꾸기 싫다”는 분들이 꽤 많습니다. 당연하죠. 쓰던 프로그램들, 익숙한 환경을 포기하는 건 쉬운 일이 아니니까요. 그런 분들한테 딱 맞는 방법이 WSL(Windows Subsystem for Linux)입니다.

    WSL을 한 줄로 설명하자면, 윈도우 안에서 리눅스를 실행할 수 있게 해주는 기능입니다. 가상머신처럼 무겁지도 않고, 별도의 파티션 나누기도 필요 없어요. 제가 올해 초 WSL2를 설치해서 약 두 달 정도 써봤는데, 개발 환경 구축할 때 특히 편리했습니다. 윈도우 파일 시스템과 리눅스 환경을 오가면서 쓸 수 있다는 게 생각보다 훨씬 실용적이에요.

    다만 WSL이 완벽한 리눅스 환경을 대체하진 않습니다. 일부 기능 제한이 있고, 그래픽 집약적인 작업에서는 성능 차이가 있기도 해요. 이 부분도 아래 글에서 솔직하게 다루고 있으니 참고해보세요.

    자세히 읽어보기: 윈도우에서 리눅스 사용: WSL 설치 및 설정

    리눅스 vs 윈도우: 핵심 차이 한눈에 보기

    💡 어느 쪽이 더 낫다는 게 아니라, 어떤 상황에서 무엇이 더 맞는지를 알아야 합니다.

    항목 윈도우 리눅스
    인터페이스 GUI 중심, 직관적 CLI 중심, 학습 필요
    소프트웨어 호환성 폭넓은 상용 소프트웨어 오픈소스 생태계 강점
    개발 환경 설정이 다소 복잡 기본적으로 개발 친화적
    보안 업데이트 마이크로소프트 일정 의존 빠른 커뮤니티 패치
    비용 라이선스 비용 발생 대부분 무료
    커스터마이징 제한적 시스템 전반 수정 가능
    게임 지원 압도적으로 우세 Steam Proton으로 개선 중
    서버 환경 일부 엔터프라이즈 사용 전 세계 서버의 대다수

    표를 보면 확실히 느껴지시죠? 리눅스가 절대적으로 우월한 게 아니라, 상황에 따라 선택이 달라집니다. 개인 PC 게임용이라면 윈도우가 맞고, 개발 서버나 클라우드 환경이라면 리눅스가 훨씬 자연스럽습니다.

    flowchart TD
        A[리눅스 입문 시작] --> B{사용 목적은?}
        B -->|개발/서버 학습| C[배포판 선택]
        B -->|윈도우 유지하고 싶음| D[WSL 설치]
        C --> E[우분투 추천]
        C --> F[페도라 / 민트 등]
        E --> G[기본 명령어 학습]
        D --> G
        G --> H[터미널 활용법 익히기]
        H --> I[실무 프로젝트 적용]
    

    자주 묻는 질문 (FAQ)

    리눅스는 윈도우처럼 GUI가 필요 없나요?

    필요 없는 건 아닙니다. 리눅스에도 GNOME, KDE 같은 훌륭한 GUI 데스크탑 환경이 있습니다. 우분투를 설치하면 기본적으로 GNOME이 포함되어 있어서 윈도우와 크게 다르지 않은 마우스 기반 환경을 쓸 수 있어요. 다만 서버나 개발 환경에서는 CLI(명령줄 인터페이스)를 주로 사용하는 게 효율적이기 때문에 터미널 사용이 강조되는 것입니다. 결국 GUI와 CLI 모두 상황에 따라 쓰는 도구라고 생각하시면 됩니다.

    우분투 설치 시 문제가 발생하면 어떻게 해결해야 하나요?

    가장 먼저 해볼 것은 공식 우분투 커뮤니티 포럼이나 Ask Ubuntu 사이트 검색입니다. 대부분의 오류 메시지를 그대로 복붙해서 검색하면 이미 누군가 같은 문제를 겪고 해결한 사례가 나와요. 웃긴 건, 제가 처음 설치할 때 만난 오류 5개 중 4개는 그렇게 해결했습니다. 그리고 설치 전 BIOS 설정에서 Secure Boot 옵션을 확인하는 것도 꼭 챙겨보세요. 이게 켜져 있어서 설치가 안 되는 경우가 꽤 많거든요.

    WSL을 사용하면 리눅스와 동일한 환경을 얻을 수 있나요?

    거의 비슷하지만 완전히 동일하지는 않습니다. WSL2는 실제 리눅스 커널을 사용하기 때문에 대부분의 리눅스 명령어와 개발 도구가 정상 작동합니다. 하지만 하드웨어 직접 접근이 필요한 작업이나, 특정 커널 기능을 요구하는 프로그램에서는 제한이 생길 수 있어요. 일반적인 개발 공부나 서버 스크립트 연습 목적이라면 WSL로 충분합니다. 다만 리눅스를 메인 환경으로 쓰고 싶다면 결국 별도 설치가 더 나은 경험을 줍니다.

    리눅스 입문, 어렵지 않습니다

    처음 리눅스를 접했을 때의 그 막막함, 저도 경험해봐서 압니다. 터미널이 낯설고, 명령어가 생소하고, 배포판 이름도 하나같이 어렵게 느껴지죠.

    그런데 말이에요, 리눅스는 하루 이틀 만에 마스터하는 게 아닙니다. 조금씩, 필요한 것부터 하나씩 배워가는 과정이에요. 위에서 소개한 네 가지 가이드를 순서대로 따라가시면, 어느 순간 터미널 앞에서도 자연스럽게 손이 움직이는 자신을 발견하실 겁니다.

    배포판 선택이 막막하다면 리눅스 배포판 선택 가이드부터, 명령어가 궁금하다면 기본 명령어 정리부터, 윈도우를 그대로 유지하고 싶다면 WSL 설치 가이드부터 시작해보세요. 각자의 출발점이 다를 수 있으니까요.

    💡 리눅스는 배우는 데 시간이 걸리지만, 한번 익히면 그 가치가 오래 갑니다. 지금 시작하는 게 가장 빠른 방법입니다.

  • 윈도우에서 리눅스 사용: WSL 설치 및 설정

    💡 WSL은 윈도우에서 리눅스를 별도 설치 없이 사용할 수 있는 가장 빠른 방법입니다. 명령어 한 줄로 설치하고, 실무 개발 환경까지 그대로 쓸 수 있어요.

    윈도우에서 리눅스 쓰려면 WSL이 답입니다

    리눅스 써보고 싶은데, 컴퓨터 포맷하기가 겁난다는 분들 많으시죠. 맞아요. 저도 처음엔 그랬어요.

    솔직히 말하면, 몇 년 전만 해도 리눅스를 쓰려면 USB에 설치 이미지 굽고, 파티션 나누고, 부트로더 건드리는 복잡한 과정을 거쳐야 했습니다. 잘못하면 윈도우까지 날아가는 상황이 생기기도 했고요. 저도 그렇게 한 번 날렸습니다. 진짜로.

    근데요, 지금은 완전히 달라졌습니다. WSL(Windows Subsystem for Linux)을 사용하면 윈도우 위에서 리눅스를 그냥 앱처럼 실행할 수 있거든요. 파티션? 필요 없습니다. 듀얼 부팅? 몰라도 됩니다. 그냥 명령어 하나면 끝나요.

    이 글에서는 WSL 설치 전 확인 사항부터, 실제 설치 방법, 터미널 사용법, 그리고 윈도우 파일과 리눅스를 오가는 방법까지 처음 시작하는 분들 기준으로 하나하나 짚어드리겠습니다.

    WSL 설치 전, 이것만 먼저 확인하세요

    💡 WSL 2는 윈도우 10 2004 버전(빌드 19041) 이상에서 동작합니다. 설치 전 OS 버전부터 확인하는 게 순서입니다.

    급하게 설치부터 시도하다가 오류 메시지 보고 당황하는 분들이 꽤 있습니다. 제 주변 직장인 한 분도 그랬는데, 결국 OS 버전 문제였거든요. 미리 확인했으면 30분을 날리지 않아도 됐을 텐데요.

    확인 방법은 간단합니다. 윈도우 키 + R 눌러서 winver 입력하면 현재 버전이 바로 뜹니다.

    • 윈도우 10 버전 2004 이상 (빌드 19041+)
    • 윈도우 11은 모든 버전에서 지원
    • 64비트 시스템 필수
    • RAM 4GB 이상 권장 (8GB면 더 쾌적)

    잠깐, 이건 꼭 알아야 해요. WSL에는 버전이 두 가지 있습니다. WSL 1과 WSL 2인데, 지금 기준으로는 WSL 2를 쓰는 게 압도적으로 낫습니다. 파일 시스템 성능이 몇 배 차이 나고, 실제 리눅스 커널을 그대로 사용하기 때문에 호환성도 훨씬 좋거든요.

    가상화 기능도 활성화되어 있어야 합니다. 대부분 기본으로 켜져 있지만, 구형 PC라면 BIOS에서 Intel VT-x 또는 AMD-V를 활성화해야 할 수도 있습니다. 이 부분에서 막히는 분이 간혹 있는데, 제조사 홈페이지에서 모델명 검색하면 방법이 나옵니다.

    WSL 설치 및 우분투 배포판 선택하기

    💡 PowerShell에서 명령어 한 줄로 WSL과 우분투를 동시에 설치할 수 있습니다. 2023년 이후 가장 단순한 방법이에요.

    요즘은 정말 쉬워졌습니다. 예전처럼 기능 하나씩 켜고, 재부팅하고, 마이크로소프트 스토어 들어가고 하는 복잡한 과정이 필요 없어요.

    PowerShell을 관리자 권한으로 열고 아래 명령어 하나만 입력하면 됩니다.

    wsl --install

    이 명령어 하나로 WSL 2 활성화, 가상 머신 플랫폼 설정, 기본 배포판인 우분투 설치까지 한 번에 처리됩니다. 설치 완료 후 재부팅하면 우분투가 자동으로 초기 설정을 시작해요.

    아 그리고, 우분투 말고 다른 배포판을 원하는 분들을 위해 선택지를 정리해봤습니다.

    배포판 특징 추천 대상 설치 명령어
    Ubuntu 22.04 가장 많은 자료, 최신 LTS 입문자, 웹 개발자 wsl –install -d Ubuntu-22.04
    Debian 가볍고 안정적 서버 운영 목적 wsl –install -d Debian
    Kali Linux 보안 도구 내장 보안/침투 테스트 학습 wsl –install -d kali-linux
    Fedora 최신 패키지 빠른 반영 Red Hat 계열 학습 별도 수동 설치 필요

    처음 시작하는 분이라면 그냥 기본 우분투 쓰세요. 검색하면 자료가 가장 많이 나오고, 막혔을 때 해결책도 쉽게 찾을 수 있습니다. 저도 처음엔 “있어 보인다”는 이유로 Arch 리눅스를 설치하려다 포기한 적이 있어요. 입문할 때는 메이저 배포판이 답입니다.

    flowchart TD
        A[PowerShell 관리자 실행] --> B[wsl --install 입력]
        B --> C[WSL 2 및 우분투 자동 다운로드]
        C --> D[재부팅]
        D --> E[우분투 초기 설정\n사용자명 + 비밀번호 입력]
        E --> F[WSL 설치 완료 ✅]
        F --> G{다른 배포판 필요?}
        G -- 예 --> H[wsl --install -d 배포판명]
        G -- 아니오 --> I[바로 개발 시작]
    

    WSL 터미널에서 리눅스 명령어 사용하는 방법

    💡 Windows Terminal과 VSCode를 연동하면 WSL 개발 환경이 크게 쾌적해집니다. 기본 터미널보다 훨씬 편해요.

    설치가 끝났으면 이제 실제로 써볼 차례입니다. 그런데 여기서 반전인데, 기본 제공되는 우분투 창보다 Windows Terminal을 사용하는 게 훨씬 편합니다. 마이크로소프트 스토어에서 무료로 받을 수 있고, WSL 배포판을 탭으로 열어서 쓸 수 있거든요.

    더 나아가면 VSCode 설치 후 WSL 확장 프로그램을 추가하면, 리눅스 파일 시스템 안에서 바로 코딩이 가능해집니다. 제가 지난달에 직접 파이썬 프로젝트 환경을 WSL 위에 세팅해봤는데, 속도나 안정성이 진짜 맥북 쓰는 친구들이랑 비교해도 전혀 부족함이 없었어요.

    WSL 터미널에서 기본적으로 알아두면 좋은 명령어들은 이렇습니다.

    • ls — 현재 폴더 내용 보기
    • cd 폴더명 — 폴더 이동
    • pwd — 현재 위치 확인
    • sudo apt update && sudo apt upgrade — 패키지 최신화
    • sudo apt install 패키지명 — 프로그램 설치

    혹시 처음 명령어를 입력할 때 “이게 맞나?” 싶은 느낌 받으신 분 있으신가요? 저도 그랬거든요. 처음엔 엔터 누르는 것도 긴장됐는데, 써보면 금방 익숙해집니다.

    패키지 설치는 apt 명령어를 씁니다. 우분투 기준이고요, 예를 들어 git을 설치하려면 이렇게 합력합니다.

    sudo apt install git

    설치 중간에 “계속하시겠습니까?” 라는 메시지가 나오면 Y를 입력하고 엔터 누르면 됩니다. 솔직히 이 부분은 저도 처음엔 영어라서 좀 당황했어요. (이건 진짜 처음엔 다 그래요)

    윈도우와 WSL 간 파일 공유, 생각보다 훨씬 쉽습니다

    💡 WSL에서 /mnt/c 경로로 이동하면 윈도우 C드라이브에 바로 접근할 수 있습니다. 별도 설정 없이 파일을 주고받을 수 있어요.

    그런데 말이에요, 많은 분들이 “WSL에서 만든 파일을 윈도우에서 어떻게 열지?” 이 부분에서 막힙니다. 저도 처음에 이게 제일 헷갈렸거든요.

    사실 방법은 두 가지입니다. 방향에 따라 접근이 달라요.

    WSL에서 윈도우 파일 접근하기

    WSL 터미널에서 /mnt/c로 이동하면 바로 C드라이브입니다. 예를 들어 윈도우 바탕화면의 파일을 열고 싶다면 이렇게 하면 됩니다.

    cd /mnt/c/Users/사용자명/Desktop

    D드라이브는 /mnt/d, E드라이브는 /mnt/e 이런 식으로 매핑되어 있어요.

    윈도우에서 WSL 파일 접근하기

    파일 탐색기 주소창에 \\wsl$ 을 입력하면 WSL 배포판 폴더가 네트워크 드라이브처럼 보입니다. 클릭해서 들어가면 리눅스 파일 시스템을 윈도우 탐색기에서 그냥 볼 수 있어요. 드래그 앤 드롭으로 파일 복사도 됩니다.

    참고로, 성능 면에서 팁을 드리자면 리눅스용 프로젝트 파일은 윈도우 드라이브(/mnt/c)가 아닌 WSL 파일 시스템 안에 두는 게 훨씬 빠릅니다. 우리 동네 개발자 커뮤니티 모임에서도 이 얘기가 나왔는데, 실제로 같은 프로젝트를 두 곳에 두고 비교해보니 속도 차이가 체감될 정도였거든요.

    flowchart LR
        subgraph Windows
            A[C드라이브\n파일 탐색기]
            B[VSCode\nWindows 앱]
        end
        subgraph WSL2
            C[Ubuntu\n파일 시스템]
            D[개발 프로젝트\n권장 위치]
        end
        A -- /mnt/c 경로 --> C
        C -- \\wsl$ 경로 --> A
        B -- WSL 확장 --> D
        D -- 빠른 I/O --> D
    

    WSL 처음 쓸 때 자주 겪는 문제들

    💡 WSL 설치 오류 대부분은 Windows 업데이트 미적용 또는 가상화 기능 비활성화가 원인입니다. 먼저 이 두 가지부터 확인하세요.

    설치하다가 막히면 굉장히 답답하죠. 자주 나오는 상황들을 정리해봤습니다.

    1. 0x80370102 오류 — 가상화 기능이 꺼져 있는 경우입니다. BIOS 설정에서 Intel VT-x 또는 AMD-V를 활성화하세요.
    2. 0x8007019e 오류 — Windows Subsystem for Linux 기능이 꺼진 상태입니다. wsl --install이 자동으로 켜주지만, 구 버전 윈도우에서는 수동으로 켜야 할 수 있어요.
    3. wsl 명령어를 찾을 수 없음 — PowerShell이 관리자 권한으로 실행되지 않았을 가능성이 높습니다.
    4. 설치는 됐는데 화면이 안 뜸 — 재부팅이 완료된 후 시작 메뉴에서 Ubuntu를 직접 검색해서 실행해보세요.

    이거 저만 그런 건가요? 저도 처음에 관리자 권한 빠뜨리고 한참 헤맸는데, 의외로 이 실수 하는 분들이 많더라고요.

    웃긴 건, 이 오류들 중 90% 이상이 재부팅 한 번으로 해결된다는 겁니다. 윈도우 업데이트도 밀려있으면 먼저 다 적용하고 시작하는 게 좋아요. 그게 제일 확실한 예방책입니다.

    WSL로 개발 환경 세팅, 어디까지 가능한가요

    💡 Node.js, Python, Docker, Git 등 실무에서 쓰는 개발 도구 대부분이 WSL에서 완벽하게 동작합니다. 맥북 없이도 동급 환경 구성이 가능해요.

    WSL이 그냥 “리눅스 체험판” 수준이라고 생각하시는 분들도 있는데, 전혀 그렇지 않습니다. 제 주변 30대 초반 개발자 한 분은 맥북 쓰다가 WSL로 갔는데, 웹 개발 작업에서는 오히려 더 편하다고 했어요. 특히 Docker 연동이나 Git 작업에서는 체감 차이가 없다고요.

    WSL에서 세팅 가능한 것들을 간단히 정리하면:

    • Python, Node.js, Java, Go, Rust — 주요 언어 런타임 전부
    • Git, GitHub CLI — 버전 관리
    • Docker Desktop — WSL 2 백엔드 연동 지원
    • MySQL, PostgreSQL, MongoDB — 데이터베이스
    • nginx, Apache — 웹 서버

    사실은 처음 WSL 접할 때 “이게 진짜 리눅스랑 똑같은 거 맞나?” 의심했는데, 써보니까 맞더라고요. 실제 리눅스 커널이 돌아가는 거라 호환성 문제가 거의 없습니다.

    특히 백엔드 개발자 분들이나 데이터 분석 공부하시는 분들한테는 진짜 강력 추천합니다. 포맷 걱정 없이 바로 시작할 수 있으니까요.

    혹시 이 중에서 특정 도구 설치 방법이나 환경 세팅 방법이 궁금하신 분 있으신가요? 댓글로 남겨주시면 다음 글에서 따로 다뤄보겠습니다.


    관련 글 더 보기

    전체 가이드로 돌아가기: 리눅스 입문 가이드: 설치부터 기본 명령어까지 완벽 정리

  • 리눅스 터미널 사용법

    💡 터미널은 처음엔 낯설지만, 자동 완성(Tab)과 히스토리(↑↓)만 익혀도 작업 속도가 3배는 빨라집니다.

    터미널, 처음 열면 뭐가 보이나요?

    터미널을 처음 열었을 때 가장 먼저 보이는 건 이런 모양입니다.

    user@hostname:~$

    이게 뭔지 몰라서 그냥 꺼버린 경험, 있으시죠? 주변에서 리눅스 배운다고 했던 20대 초반 지인도 딱 이 화면에서 멈췄다고 했어요. “아무것도 없는데 어디에 뭘 입력해요?”라고요.

    하나씩 뜯어보면 별거 없습니다. user는 현재 로그인 사용자 이름, hostname은 컴퓨터 이름, ~는 홈 디렉토리, $는 일반 사용자라는 표시예요. 관리자(root)면 $가 #으로 바뀝니다.

    여기까지만 이해해도 터미널 사용법의 첫 관문은 통과한 겁니다.

    명령어 입력과 실행의 기본 흐름

    💡 명령어는 항상 프롬프트 뒤에 입력하고 Enter를 누르면 실행됩니다. 결과가 나오면 읽고, 다시 프롬프트가 뜨면 준비 완료입니다.

    터미널 사용법의 기본 흐름은 단순합니다. 명령어 입력 → Enter → 결과 출력 → 다음 명령어 입력. 이 반복이에요.

    근데 중요한 포인트가 있습니다. 결과가 없을 때도 있어요. 예를 들어 mkdir 새폴더를 치면 아무것도 안 나옵니다. 그게 정상입니다. 리눅스는 문제가 없으면 조용한 게 기본 철학이에요.

    웃긴 건, 처음에 이걸 몰라서 “명령어가 안 먹혔나?” 하고 같은 걸 세 번 입력해서 폴더를 세 개 만든 경험이 있어요. (이미 있다는 에러가 나오면 그때서야 알아챘습니다.)

    오류가 났을 때는 빨간 글씨나 ‘error’, ‘permission denied’ 같은 메시지가 뜹니다. 이 메시지를 그대로 검색하면 해결책이 나오는 경우가 대부분입니다. 에러 메시지가 나왔다고 당황하지 마세요. 오히려 힌트입니다.

    sequenceDiagram
        participant U as 사용자
        participant T as 터미널
        participant S as 시스템
    
        U->>T: 명령어 입력 (예: ls -la)
        T->>S: 명령어 전달
        S->>S: 명령어 처리
        S->>T: 결과 반환
        T->>U: 출력 표시
        T->>U: 프롬프트 재표시 ($)
        U->>T: 다음 명령어 입력
    

    작업 속도를 3배 올려주는 히스토리와 자동 완성

    💡 Tab 키 자동 완성과 ↑↓ 히스토리는 터미널의 가장 강력한 기능입니다. 이것만 써도 작업 속도가 완전히 달라집니다.

    이 두 가지를 모르고 터미널 쓰는 건 진짜 손해입니다.

    Tab 자동 완성은 파일명이나 명령어를 일부만 입력하고 Tab을 누르면 나머지를 자동으로 채워줍니다. 예를 들어 Documents 폴더로 이동하려면 cd Doc까지만 치고 Tab을 누르면 cd Documents/가 됩니다. 긴 파일명 치다가 오타 낼 일이 없어요.

    참고로 Tab을 두 번 누르면 해당 글자로 시작하는 모든 항목이 나열됩니다. 뭐가 있는지 탐색할 때도 씁니다.

    히스토리 기능은 방향키 ↑를 누르면 이전에 입력한 명령어가 차례로 나옵니다. 같은 명령어를 반복할 때 다시 타이핑할 필요가 없어요. history 명령어를 치면 최근 사용한 명령어 목록이 번호와 함께 나오고, !번호 형식으로 재실행도 됩니다.

    단축키 / 명령어 기능 사용 빈도
    Tab 명령어·파일명 자동 완성 매우 높음
    ↑ / ↓ 이전/다음 명령어 히스토리 탐색 매우 높음
    Ctrl + C 실행 중인 명령어 강제 종료 높음
    Ctrl + L 터미널 화면 지우기 (clear와 동일) 높음
    Ctrl + A / E 커서를 줄 맨 앞/뒤로 이동 중간
    history 명령어 사용 기록 전체 보기 중간
    Ctrl + R 히스토리 역방향 검색 중간

    Ctrl+R은 처음엔 좀 어색한데, 익숙해지면 정말 자주 씁니다. 긴 명령어를 일부 키워드로 검색해서 꺼낼 수 있거든요.

    스크립트 작성으로 반복 작업 자동화하기

    💡 셸 스크립트는 명령어를 파일에 저장해두고 한 번에 실행하는 방식입니다. 반복 작업을 자동화하는 가장 첫 걸음입니다.

    아 그리고, 터미널 사용법에서 스크립트를 빼놓을 수 없습니다. 어렵게 생각할 필요 없어요. 그냥 명령어 모음을 파일에 저장하는 겁니다.

    예를 들어 매일 특정 폴더를 백업하는 작업을 한다면, 매번 명령어를 치는 대신 스크립트 파일 하나를 만들어놓고 실행하면 끝입니다. 직접 지난 주말에 해봤는데, 10줄짜리 스크립트 하나로 매일 하던 5분짜리 수동 작업을 완전히 없앴습니다.

    기본 스크립트 만드는 방법입니다.

    1. nano로 파일 만들기: nano backup.sh
    2. 첫 줄에 반드시 입력: #!/bin/bash
    3. 그 아래에 명령어 순서대로 입력
    4. 저장 후 실행 권한 부여: chmod +x backup.sh
    5. 실행: ./backup.sh

    처음엔 ‘이게 되나?’ 싶었는데, 막상 해보면 진짜 됩니다. 스크립트가 실행되면서 명령어가 하나씩 순서대로 처리되는 걸 보면 꽤 뿌듯합니다.

    💡 팁 — 스크립트 첫 줄의 #!/bin/bash를 ‘셔뱅(shebang)’이라고 부릅니다. “이 파일은 bash로 실행하라”는 선언이에요. 빠뜨리면 오류가 날 수 있으니 습관적으로 넣어두세요.

    터미널이 처음에 무섭게 느껴지는 건 당연합니다. 그런데 Tab 자동 완성과 히스토리 두 개만 익혀도 체감이 확 달라져요. 그다음엔 자주 쓰는 명령어가 몇 개씩 쌓이고, 어느 순간 마우스보다 터미널이 더 편해지는 순간이 옵니다. 이거 저만 그런 건 아니겠죠?


    관련 글 더 보기

    전체 가이드로 돌아가기: 리눅스 입문 가이드: 설치부터 기본 명령어까지 완벽 정리

  • 리눅스 기본 명령어 정리

    💡 리눅스 명령어는 외우는 게 아닙니다. 자주 쓰는 20개만 손에 익히면 나머지는 자연스럽게 따라옵니다.

    터미널 앞에서 얼어붙었던 그 기억

    처음 터미널 창을 열었을 때 어떠셨나요? 저는 솔직히 그 검은 화면 앞에서 5분은 가만히 있었습니다. 커서만 깜빡이고, 뭘 입력해야 하는지 하나도 몰랐어요.

    그게 맞아요. 터미널은 익숙하지 않으면 무섭습니다. 근데 알고 보면 몇 가지 리눅스 명령어 패턴만 반복하는 구조예요. 오늘은 그 핵심만 뽑아서 정리해 드릴게요. 한 번 읽고 나면 “아, 별거 아니었네”라는 생각이 드실 겁니다.

    파일과 폴더를 다루는 기본 명령어

    💡 ls, cd, mkdir, rm. 이 네 가지가 파일 관리의 90%입니다. 여기서 시작하세요.

    리눅스에서 파일 탐색기 역할을 하는 게 바로 이 명령어들입니다. 윈도우에서 마우스로 하던 걸 글자로 하는 것뿐이에요.

    • ls — 현재 폴더 안의 파일/폴더 목록 보기. ls -la를 쓰면 숨김 파일까지 전부 보입니다.
    • cd — 폴더 이동. cd Documents라고 치면 Documents 폴더로 들어가요. cd ..는 상위 폴더로 이동.
    • mkdir — 새 폴더 만들기. mkdir 프로젝트 하면 바로 생깁니다.
    • rm — 파일 삭제. 이건 진짜 조심해야 합니다. 휴지통이 없어요. rm -rf는 특히 신중하게.
    • cp — 파일 복사. cp 원본파일 복사본 형태로 씁니다.
    • mv — 파일 이동 또는 이름 바꾸기. 이름 바꿀 때도 mv를 씁니다.

    제가 지난달에 직접 리눅스 서버에서 대용량 파일 정리를 해봤는데, 이 여섯 개 명령어만으로 수백 개 파일을 20분 만에 정리했습니다. GUI로 했으면 한 시간은 걸렸을 작업이에요.

    잠깐, 이건 꼭 알아야 해요. 명령어 뒤에 붙는 옵션(플래그)이 기능을 바꿔줍니다. ls만 치면 그냥 목록인데, ls -l은 상세 정보까지 보여주고, ls -a는 숨김 파일까지 보여줘요. 옵션 조합이 명령어 활용의 핵심입니다.

    시스템 정보 확인하는 명령어

    💡 내 시스템이 어떤 상태인지 알아야 문제를 해결할 수 있습니다. uname, df, ps, top, 이 네 가지로 웬만한 상태 파악이 됩니다.

    뭔가 이상하다 싶을 때, 또는 서버 상태를 점검해야 할 때 자주 쓰는 명령어들입니다.

    • uname -a — 운영체제, 커널 버전, 아키텍처 한 번에 확인.
    • df -h — 디스크 사용량. 어느 파티션이 꽉 찼는지 바로 보입니다.
    • free -m — 메모리 사용량. RAM이 얼마나 남았는지 확인.
    • ps aux — 현재 실행 중인 프로세스 전체 목록.
    • top — 실시간 CPU·메모리 사용률. 윈도우 작업관리자랑 비슷해요.
    • whoami — 현재 로그인된 사용자 이름 확인. 단순하지만 꽤 자주 씁니다.

    이 명령어들은 외우려고 하기보다 “시스템이 이상하다 → df, free, top부터 확인한다”는 루틴으로 기억하시는 게 훨씬 오래 남습니다.

    mindmap
      root((리눅스 명령어))
        파일 관리
          ls
          cd
          mkdir
          rm
          cp
          mv
        시스템 확인
          uname
          df
          free
          top
          ps
        텍스트 편집
          nano
          grep
          cat
          less
        권한 관리
          chmod
          chown
          sudo
          su
    

    텍스트 편집과 검색 명령어

    💡 nano는 가장 쉬운 터미널 텍스트 편집기입니다. grep은 파일 안에서 원하는 내용을 찾아주는 검색 도구입니다.

    여기서 반전인데, 리눅스 초보자한테 vi(vim)를 먼저 가르치는 곳이 많아요. 근데 솔직히 이 부분은 저도 좀 의아합니다. vi는 진입장벽이 꽤 있거든요. 처음엔 nano가 훨씬 낫습니다.

    • nano 파일명 — 파일 열기. Ctrl+O 저장, Ctrl+X 종료. 직관적입니다.
    • cat 파일명 — 파일 내용 바로 출력. 짧은 파일 확인할 때 편합니다.
    • less 파일명 — 긴 파일 페이지 단위로 보기. q 누르면 종료.
    • grep ‘찾을내용’ 파일명 — 파일 안에서 특정 텍스트 검색. 로그 분석할 때 정말 많이 써요.

    (이건 진짜 꿀팁) grep에 -r 옵션을 붙이면 폴더 전체를 재귀 검색합니다. grep -r '에러' /var/log/ 이렇게 치면 로그 폴더 전체에서 ‘에러’ 텍스트가 포함된 줄을 다 찾아줍니다. 이것만 알아도 로그 분석이 훨씬 쉬워집니다.

    권한 설정과 sudo 명령어

    💡 리눅스에서 권한은 보안의 핵심입니다. sudo는 관리자 권한이 필요할 때만 쓰고, chmod로 파일 권한을 조절합니다.

    그런데 말이에요, 이 권한 개념을 처음에 이해 못 해서 막히는 분들이 정말 많습니다. 저도 처음엔 “왜 파일을 못 여는 거지?” 싶어서 한참 헤맸어요.

    리눅스는 모든 파일에 읽기(r), 쓰기(w), 실행(x) 권한이 있고, 소유자·그룹·기타 사용자로 나뉩니다. chmod 755 파일명 같은 숫자 조합이 이 권한을 나타냅니다.

    • sudo — 관리자 권한으로 명령어 실행. 패키지 설치할 때 항상 앞에 붙여요.
    • chmod — 파일 권한 변경. chmod +x 스크립트.sh는 실행 권한 부여.
    • chown — 파일 소유자 변경. 서버 관리할 때 자주 씁니다.

    혹시 “sudo 쓰면 안 위험한가요?” 하는 분들도 있는데, 위험한 건 맞아요. 그래서 꼭 필요한 경우에만 쓰는 습관이 중요합니다. 아무 명령어나 앞에 sudo 붙이는 건 절대 권하지 않습니다.

    처음엔 많아 보여도 실제로 매일 쓰는 명령어는 10개도 안 됩니다. 오늘 정리한 것들 중에서 ls, cd, mkdir, grep, sudo, chmod 이 여섯 개만 먼저 손에 익혀보세요. 나머지는 필요할 때 자연스럽게 찾게 됩니다.


    관련 글 더 보기

    전체 가이드로 돌아가기: 리눅스 입문 가이드: 설치부터 기본 명령어까지 완벽 정리

  • 리눅스 배포판 선택 가이드

    💡 리눅스 배포판은 수백 가지가 넘지만, 처음 시작한다면 우분투 하나만 기억해도 충분합니다. 목적에 맞는 배포판을 고르는 기준을 지금 정리해 드릴게요.

    리눅스 배포판, 왜 이렇게 많은 건가요?

    윈도우는 딱 하나잖아요. 그런데 리눅스는 검색만 해봐도 우분투, 데비안, 페도라, 아치, 민트, 라즈비안… 끝도 없이 나옵니다. 처음 리눅스를 알아보기 시작한 주변 지인도 “뭘 설치해야 하는지부터 모르겠다”며 며칠을 헤맸다고 했어요.

    사실 이건 리눅스의 특성 때문입니다. 리눅스는 오픈소스 운영체제 커널이고, 누구든 이걸 기반으로 자기만의 시스템을 만들 수 있어요. 그 결과물이 바로 배포판(Distribution)입니다. 정부 기관, 기업, 개인 개발자 그룹이 각자의 목적에 맞게 만든 거예요.

    그래서 배포판이 많은 건 사실 좋은 신호입니다. 선택지가 많다는 뜻이니까요. 근데요, 그게 오히려 처음엔 더 헷갈리죠.

    리눅스 배포판의 두 가지 큰 흐름

    💡 배포판 계열만 이해해도 절반은 이해한 겁니다. 크게 데비안 계열과 레드햇 계열, 두 줄기로 나뉩니다.

    리눅스 배포판에는 뿌리가 있습니다. 마치 언어에 어족이 있듯이요. 가장 크게 나뉘는 두 계열이 데비안(Debian) 계열레드햇(Red Hat) 계열입니다.

    데비안 계열은 패키지 관리자로 apt를 씁니다. 우분투, 리눅스 민트, 라즈베리 파이 OS가 전부 여기에 속해요. 커뮤니티가 크고, 인터넷에 한국어 자료도 많아서 초보자한테 훨씬 유리합니다.

    레드햇 계열yum이나 dnf를 씁니다. 페도라, CentOS, RHEL이 대표적이에요. 기업 서버 환경에서 많이 씁니다. 사실 취업 준비하는 분이라면 이쪽도 알아두면 좋긴 해요. 근데 처음 시작이라면 굳이 지금 당장은 아니어도 됩니다.

    잠깐, 이건 꼭 알아야 해요. 아치 리눅스(Arch Linux)라는 것도 있는데, 이건 완전히 다른 철학으로 만들어진 배포판입니다. 배우는 재미가 있지만, 초보자한테 절대 권하지 않아요. 설치 자체가 하나의 시험입니다.

    flowchart TD
        A[리눅스 배포판 선택 시작] --> B{사용 목적이 뭔가요?}
        B --> C[개인 학습 / 일상 사용]
        B --> D[서버 / 기업 환경]
        B --> E[임베디드 / IoT]
        C --> F[우분투 / 리눅스 민트]
        D --> G[CentOS / RHEL / 페도라]
        E --> H[라즈베리 파이 OS / 알파인]
        F --> I[✅ 초보자 강력 추천]
        G --> J[취업 준비생도 참고]
        H --> K[라즈베리 파이 보드 사용자]
    

    초보자에게 솔직하게 추천하는 배포판 비교

    💡 우분투가 1순위, 리눅스 민트가 2순위입니다. 이 두 가지 중 하나를 고르면 대부분의 문제가 해결됩니다.

    제가 올해 초에 개발자 커뮤니티 설문 결과를 여러 개 찾아서 비교해봤어요. 국내외 초보 사용자들이 처음 선택한 배포판 순위를 보면 거의 예외 없이 우분투가 1위였습니다. 이유는 간단해요. 자료가 많고, 문제가 생겨도 검색하면 답이 나오고, 설치도 쉽고, 업데이트도 잘 됩니다.

    배포판 계열 난이도 추천 대상 특징
    우분투 (Ubuntu) 데비안 ★☆☆ 모든 초보자 자료 풍부, GUI 지원, 커뮤니티 최대
    리눅스 민트 (Linux Mint) 데비안 ★☆☆ 윈도우 전환자 윈도우 UI와 유사, 안정적
    페도라 (Fedora) 레드햇 ★★☆ 개발자 지망생 최신 기술 도입 빠름, 기업 연계
    라즈베리 파이 OS 데비안 ★☆☆ IoT / 교육용 라즈베리 파이 전용 최적화
    아치 리눅스 (Arch) 독립 ★★★ 고급 사용자 높은 자유도, 진입장벽 높음

    혹시 “그냥 다 해보면 안 되나요?” 싶은 분도 계실 텐데요. 물론 가능합니다. USB 하나만 있으면 여러 배포판을 라이브 부팅으로 설치 없이 체험할 수 있어요. 그렇게 직접 써보고 고르는 게 사실 제일 정확한 방법이기도 합니다.

    설치 전에 반드시 확인해야 할 세 가지

    💡 하드웨어 사양, 사용 목적, 커뮤니티 지원 여부. 이 세 가지만 확인하면 배포판 선택에서 실패할 일이 없습니다.

    그런데 말이에요, 배포판 이름보다 중요한 게 있습니다. 내 컴퓨터에서 잘 돌아가는지, 내 목적에 맞는지를 먼저 따져야 해요.

    첫째, 하드웨어 사양을 확인하세요. 우분투는 최소 2GB RAM, 25GB 저장공간을 권장합니다. 오래된 노트북이라면 루분투(Lubuntu)나 리눅스 민트 XFCE 에디션처럼 경량 버전이 훨씬 쾌적합니다. 주변 직장인 한 분이 10년 된 구형 노트북에 우분투 기본판 설치했다가 너무 느려서 포기한 적이 있거든요. 경량 버전 권하니까 바로 해결됐습니다.

    둘째, 사용 목적이 중요합니다. 웹 개발 공부라면 우분투가 정답에 가깝습니다. 취업해서 서버 다뤄야 한다면 페도라나 CentOS도 알아두면 좋습니다. 라즈베리 파이로 뭔가 만들고 싶다면 라즈베리 파이 OS, 고민할 것도 없어요.

    셋째, 지원 기간과 커뮤니티를 확인하세요. 우분투 LTS 버전은 5년 지원됩니다. 안정성을 중시한다면 LTS를 선택하는 게 맞습니다. 최신 버전은 6개월마다 나오는데, 이건 얼리어답터 성향이 있는 분들에게 어울려요.

    아 그리고, 가상머신(VirtualBox 같은 거)으로 먼저 테스트해보는 방법도 있습니다. 윈도우 안에서 리눅스를 돌려볼 수 있어서, 기존 환경을 전혀 손대지 않아도 됩니다. 처음엔 이 방법이 제일 안전하고 마음 편해요.

    어떤 배포판을 선택하셨나요? 아니면 아직 고민 중이신가요? 저는 개인적으로 첫 배포판으로 우분투를 선택한 걸 한 번도 후회한 적이 없습니다. 자료가 넘쳐나서 모르는 게 없었거든요. 시작이 반이라고, 일단 하나 골라서 설치해보는 게 가장 빠른 길입니다.


    관련 글 더 보기

    전체 가이드로 돌아가기: 리눅스 입문 가이드: 설치부터 기본 명령어까지 완벽 정리