버전관리 : Git, GitHub, GitHub Desktop

2025. 9. 13. 21:31·C#

Git

개발자라면 모를 수가 없는 가장 널리 쓰이는 분산형 버전 관리 시스템이다.

현재는 사실상 업계 표준으로 자리잡았고, 많은 기업에서 필수 기술로 요구하고있다.

Git은 단순히 파일을 저장하는 게 아니라 변경 이력 자체를 관리한다.

  • Commit : 특정 시점의 스냅샷 저장
  • 되돌리기 : 특정 지점으로 상태를 되돌릴 수 있음
  • 브랜치(branch) : 여러 작업 분기를 나눠 관리할 수 있어 협업에 유용함
  • Merge : 여러 작업을 다시 합쳐 통합

이것이 Git을 짧게 설명할 수 있는 대표적인 기능이다.

Git은 이러한 버전 관리를 로컬 뿐만 아니라 원격 저장소(Remote Repository)를 지원한다.

버전 관리 뿐만 아니라 협업에 강력한 도구로서 활용되고있다.


GitHub

Git 저장소를 인터넷상에서 호스팅해주는 서비스다.

프로젝트를 원격 저장소(Remote Repository)에 올려두고, 원격에서 접근할 수 있게 해준다.

GitHub는 개발자들의 협업 플랫폼으로 활용되는데 코드 버전 관리, 코드 리뷰, 포로젝트 관리, 자동화(CI/CD), 오픈소스 커뮤니티 등 다양하고 활발하게 사용되고 있다.

 

아래는 자주 쓰이는 필수적인 깃 명령어다.

git clone 저장소 주소 원격 저장소에 있는 프로젝트를 내 로컬 PC로 복제한다
git status 현재 로컬 저장소의 상태 확인 (변경 파일, 추적 여부, 스테이징 여부 등)
git add. 현재 디렉토리의 모든 변경 파일을 스테이징 영역에 추가
git commit -m "메세지" 스테이징된 변경 사항을 로컬 저장소에 기록
git push origin 브랜치명 로컬 브랜치의 커밋 내역을 원격 저장소의 해당 브랜치로 업로드
git pull origin 브랜치명 원격 저장소의 최신 내역을 내려받아 현재 브랜치에 병합
git fetch 원격 저장소의 최신 변경 사항을 가져오기만 하고, 병합은 하지 않음
git brach 브랜치명 새로운 브랜치를 생성
git checkout 브랜치명 작업 위치를 해당 브랜치로 전환
git merge 지정한 브랜치를 현재 브랜치에 병합
git rebase 지정한 브랜치의 변경 내역을 현재 브랜치에 재배치
git cherry-pick 커밋ID 다른 브랜치에 있는 특정 커밋만 골라와서 현재 브랜치에 적용
git stash 현재 작업 중인 변경 사항을 임시 저장 후 깨끗하게 만듦
git stash list stash 목록 확인
git stash apply 가장 최근 stash를 다시 적용한다
git stash pop 가장 최근 stash를 적용하면서, stash 목록에서 제거
git stash drop 특정 stash 항목을 삭

 

아래의 내용도 알아두는 게 좋다.

  • Pull Reuest (PR) - 브랜치에 commit, push 한 코드를 병합 요청하는 걸 이야기한다. 이 과정에서 코드를 최종적으로 확인하는 과정을 거치며 코드 리뷰 등이 수행된다.
  • Issus - 버그, 기능 제안, 작업 할당 등을 추적할 수 있는 티켓 시스템이다. 게시판 같은 것.
  • Projects / Kanban 보드 - 프로젝트 관리를 위한 칸반 보드다. Todo List 같은 워크 플로우 관리가 가능하다.
  • Actions (CI/CD) - GitHub Actions를 이용해 테스트 자동 실행, 빌드, 배포까지 자동화할 수 있다.
  • Wiki / Discussions - 문서화, 팀원간 토론을 위한 공간이다

GitHub Desktop

GitHub Desktop은 Git과 GitHub를 GUI로 쉽게 다룰 수 있게 해주는 공식 애플리케이션이다.

명령어를 외울 필요 없이 대부분 버튼으로 조작할 수 있어 편리하다.

Git의 기본 기능을 알고 있다면 더욱 쉽게 사용할 수 있다.

단 Git의 고급 기능인 rebase, cherry-pick, stash 등은 사용할 수 없는 모양이다.

 

Sourcetree라는 애플리케이션도 유명하다.

필자는 깃헙 데스크탑보다 소스트리의 존재를 먼저 들었다.

UI가 무겁고 초보자에게는 복잡해 보이지만 브랜치 이력 시각화가 뛰어나 개발 협업에서 장점이 크다고 한다.


충돌 (Conflict)

모두가 두려워하는 현상이다...

충돌이란 서로 다른 두 변경사항이 같은 코드 영역을 수정했을 때 Git이 자동으로 병합하지 못하는 상황을 말한다.

만약 두 사람이 같은 줄을 동시에 수정한 뒤 merge/pull을 시도해서 수정 부분이 겹쳤을 때, Git은 어떤 걸 살려야 할 지 스스로 판단하지 못하기 때문에 이런 상황이 생기는 건데...

 

이 경우 Github나 IDE에서 직접 충돌을 해결해줘야한다.

친절하게도 어느 부분에서 충돌이 났는지 라인별로 전부 안내를 해주기 때문에 신중히 잘 살펴서 해결하면 된다.

다만... 최대한 충돌하는 상황을 피하기 위해 브랜치 관리를 체계적으로 하며, 협업시 의사소통을 잘 하는 게 좋다.

또한 혹시 모를 상황을 위해 항상 fetch pull 을 하며 체크해두는 것 또한 좋다.

 

 

 

애플리케이션은 필수가 아니지만 Git은 개발자에게 있어 필수 사항이다.

반드시 꾸준히 사용하면서 익숙해지자.

'C#' 카테고리의 다른 글

C# - 클래스 (Class) 생성 실습 문제 풀이  (0) 2025.09.15
C# - 클래스(Class) & 객체지향  (1) 2025.09.15
C# - 콘솔프로젝트 : 숫자 야구 만들기  (0) 2025.09.12
C# - Window11 에서 Console.SetWindowSize 안 되는 문제  (0) 2025.09.12
C# - 구조체 (Struct, Structure)  (0) 2025.09.12
'C#' 카테고리의 다른 글
  • C# - 클래스 (Class) 생성 실습 문제 풀이
  • C# - 클래스(Class) & 객체지향
  • C# - 콘솔프로젝트 : 숫자 야구 만들기
  • C# - Window11 에서 Console.SetWindowSize 안 되는 문제
ellug
ellug
Web / App / Game Dev
  • ellug
    dev.ellug
    ellug
  • 전체
    오늘
    어제
    • 분류 전체보기 (95)
      • Javascript (React, Next) (1)
      • C# (66)
      • Graphics (1)
      • Unity (25)
      • 프로그래머스 (0)
        • Lv.0 (0)
        • Lv.1 (0)
        • Lv.2 (0)
        • Lv.3 (0)
      • AI Agent (0)
      • StableDiffusion (0)
      • ETC (1)
      • 잡담 (0)
      • 유머 (0)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    큐
    delegate
    추상 클래스
    C#
    interface
    useState
    콘솔
    struct
    Network
    터미널
    클래스
    자료구조
    게임
    class
    네트워크
    최적화
    firebase
    Design Pattern
    Queue
    알고리즘
    function
    list
    Photon
    유니티
    stack
    Abstract
    스택
    inputsystem
    unity
    console
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
ellug
버전관리 : Git, GitHub, GitHub Desktop
상단으로

티스토리툴바