Git Basic Commands

Git Basic Commands Git Basic Commands는 버전 관리 시스템인 Git을 사용하기 위한 필수 명령어들의 집합입니다. 이 명령어들은 코드의 버전 관리, 협업, 이력 추적을 가능하게 하는 기본 도구이다. init, clone, add, commit, push, pull 등의 핵심 명령어들은 모든 Git 사용자가 일상적으로 사용하는 작업의 기반을 형성한다. 이러한 기본 명령어들을 이해하고 숙달하는 것은 효과적인 소프트웨어 개발과 팀 협업의 필수 요소이다. 핵심 개념 Git Basic Commands는 저장소 초기화, 변경사항 추적, 커밋 생성, 원격 저장소와의 동기화를 수행하는 기본 명령어들의 집합이다. 예를 들어, git add는 변경된 파일을 커밋 대상으로 지정하고, git commit은 실제로 변경 사항을 저장소에 기록한다. ...

September 28, 2024 · 33 min · Me

Branching and Merging

Branching and Merging Branching and Merging은 Git 과 같은 분산 버전 관리 시스템에서 핵심적인 기능이다. 브랜칭은 독립적인 작업 공간을 생성하여 여러 개발자가 동시에 작업할 수 있게 하며, 머징은 이러한 작업 결과를 하나의 코드베이스로 통합한다. 이를 통해 병렬 개발, 기능 분리, 코드 안정성 유지 등이 가능해진다. Git, SVN, Mercurial 등 다양한 버전 관리 시스템에서 지원되며, 현대 소프트웨어 개발의 필수 요소이다. 핵심 개념 Branching (브랜칭): 코드베이스의 복사본 생성으로 기능 개발/버그 수정을 격리한다. Merging (머징): 분리된 변경 사항을 메인 코드베이스에 통합하는 과정이다. HEAD: 현재 작업 중인 브랜치의 최신 커밋을 가리키는 포인터이다. graph TD main[main] -->|분기| feature[feature/login] feature -->|머지| main main -->|배포| Production 목적 병렬 개발 환경 제공 코드 충돌 최소화 기능별/작업별 독립적 개발 지원 안정적인 배포 프로세스 구축 필요성 다수의 개발자가 동시에 작업하는 환경에서 협업 효율성 증대 프로덕션 코드의 안정성 보장 실험적 기능 개발과 버그 수정의 분리 코드 리뷰와 품질 관리 용이성 주요 기능 브랜치 생성/삭제 브랜치 전환 (Checkout) 코드 병합 (Merge) 리베이스 (Rebase) 충돌 해결 (Conflict Resolution) 특징 분산형 개발 지원 비선형적 개발 이력 관리 원격 저장소와의 동기화 다양한 병합 전략 제공 장점과 단점 구분 항목 설명 ✅ 장점 병렬 개발 여러 기능을 동시에 개발 가능 안정성 메인 브랜치의 안정성 유지 실험 용이성 실험적 기능을 안전하게 테스트 롤백 용이성 문제 발생 시 쉽게 이전 상태로 복구 ⚠ 단점 복잡성 브랜치가 많아지면 관리가 복잡 충돌 발생 병합 시 코드 충돌 가능성 학습 곡선 초보자에게 어려운 개념 리소스 사용 브랜치별 리소스 사용량 증가 주요 원리 구성 요소 기능 역할 HEAD 현재 브랜치 참조 현재 작업 중인 브랜치를 가리킴 Branch Pointer 커밋 참조 특정 커밋을 가리키는 포인터 Commit Object 변경사항 저장 코드 변경 내용과 메타데이터 저장 Tree Object 디렉토리 구조 파일과 디렉토리 구조 표현 Merge Base 공통 조상 커밋 브랜치 분기점 식별 Branching 브랜칭의 주요 원리는 포인터 기반의 참조 시스템이다: ...

September 28, 2024 · 21 min · Me

Git Submodule

Git Submodule Git Submodule 은 하나의 Git 저장소 안에 또 다른 Git 저장소를 포함시킬 수 있도록 하는 기능이다. 이는 외부 라이브러리, 공통 모듈, 또는 서드파티 코드 등을 독립적으로 유지하며 주 저장소와 연동하여 사용하는 데 활용된다. 서브모듈은 특정 커밋을 참조하는 방식으로 작동하며, 주 저장소 (부모 저장소) 와 서브모듈 저장소 (자식 저장소) 간의 명확한 경계를 유지한다. 복잡한 프로젝트 구조에서 모듈화를 실현하고, 공통 코드의 버전 동기화 및 유지관리를 용이하게 한다. 핵심 개념 Git Submodule은 한 Git 저장소 (부모 저장소) 내에 다른 Git 저장소 (자식 저장소) 를 현재 저장소의 하위 디렉토리로 포함시키는 방식이다. 서브모듈은 다른 외부 저장소의 특정 커밋을 가리키는 주 저장소 내의 기록이다. 서브모듈은 매우 정적이며 특정 커밋만 추적한다. ...

September 28, 2024 · 22 min · Me

Git Subtree

Git Subtree Git Subtree 는 Git 에서 제공하는 저장소 관리 도구로, 하나의 저장소 안에 다른 저장소를 포함시켜 관리할 수 있게 해주는 기능이다. 서브모듈 (Submodule) 의 대안으로 개발되었으며, 주요 저장소 (상위 저장소) 에 하위 저장소의 파일들을 직접 포함시키는 방식으로 작동한다. Git Subtree 는 복잡한 프로젝트 구조에서 코드 재사용, 공유 라이브러리 관리, 여러 저장소의 통합 관리에 유용하며, 특히 상위 저장소에서 하위 저장소의 코드를 직접 수정하고 원래 하위 저장소에 변경사항을 반영할 수 있다는 점이 큰 특징이다. 이러한 기능은 팀 협업, 라이브러리 관리, 마이크로서비스 구조의 개발 등에서 활용된다. ...

September 28, 2024 · 13 min · Me

Git Submodule vs. Subtree

Git Submodule vs. Subtree 깃 (Git) 은 소프트웨어 개발에서 널리 사용되는 분산형 버전 관리 시스템으로, 복잡한 프로젝트를 효율적으로 관리할 수 있게 해준다. 대규모 프로젝트에서는 종종 여러 저장소 (repository) 에 분산된 코드를 하나의 프로젝트 내에서 통합해야 하는 필요성이 생긴다. 이러한 필요성을 해결하기 위해 깃은 두 가지 주요 접근 방식인 서브모듈 (Submodule) 과 서브트리 (Subtree) 를 제공한다. Git Submodule 과 Git Subtree 는 모두 하나의 Git 프로젝트 안에서 다른 Git 저장소를 하위 프로젝트처럼 관리하기 위한 방식이다. 하지만 방법은 다르다. ...

September 28, 2024 · 13 min · Me

Conflict Resolution

Conflict Resolution Git 충돌 해결 (Conflict Resolution) 은 협업 개발 과정에서 발생하는 코드 충돌을 식별하고 해결하는 프로세스로, 3-way merge 알고리즘을 기반으로 한다. 여러 개발자가 동일한 파일의 동일한 부분을 수정할 때 발생하는 충돌을 식별하고, 해결하는 전략과 도구, 워크플로우를 포함한다. 주요 단계는 충돌 탐지 → 수동/자동 해결 → 검증으로 구성되며, 최근 AI 기반 자동화 도구들이 주목받고 있다. 핵심 개념 Git 충돌 해결 (Conflict Resolution) 은 두 개 이상의 개발자가 동일한 파일의 동일한 부분을 수정할 때 발생하는 충돌을 식별하고 해결하는 과정이다. 충돌은 Git 이 변경사항을 자동으로 병합할 수 없을 때 발생하며, 개발자가 수동으로 어떤 변경사항을 유지할지 결정해야 한다. ...

September 28, 2024 · 16 min · Me

Git Hooks

Git Hooks Git Hooks 는 Git 워크플로우의 특정 이벤트 (커밋, 푸시 등) 가 발생할 때 자동으로 실행되는 사용자 정의 스크립트이다. 이 스크립트들은 소스 코드 관리, 품질 보증, 배포 자동화 등 다양한 목적으로 활용된다. Git Hooks 는 클라이언트 측과 서버 측으로 나뉘며, 로컬 개발 환경에서의 코드 검증부터 원격 저장소에서의 배포 자동화까지 광범위한 워크플로우를 지원한다. 이를 통해 개발자들은 코딩 표준 준수, 테스트 자동화, 지속적 통합/배포 등을 효율적으로 구현할 수 있다. 핵심 개념 Git Hooks 는 Git 작업 이벤트 트리거에 반응하는 자동화 스크립트이다. .git/hooks 디렉토리에 위치하며, 실행 가능한 권한이 부여된 스크립트 파일 형태로 존재한다. 이벤트는 커밋 생성, 브랜치 전환, 원격 저장소로의 푸시 등 Git 워크플로우의 다양한 시점에서 발생할 수 있으며 사전/사후 작업을 실행한다. ...

October 28, 2024 · 32 min · Me

Branch strategies

Git Branch Strategy 브랜치 전략(Branch Strategies)은 소프트웨어 개발 팀이 코드베이스를 효과적으로 관리하고 협업하며 안정적인 릴리스를 보장하기 위한 체계적인 접근 방식이다. 이는 여러 개발자가 동시에 작업할 때 발생할 수 있는 충돌을 최소화하고, 코드 품질을 유지하며, 안정적인 릴리스를 보장하기 위한 Git Workflow의 핵심 요소이다. 주요 전략으로는 Git Flow, GitHub Flow, GitLab Flow, Trunk-Based Development 등이 있으며, 각각의 전략은 프로젝트의 규모, 팀의 크기, 릴리스 주기 등에 따라 장단점을 가지고 있다. 핵심 개념 브랜치 전략은 소프트웨어 개발 팀이 버전 관리 시스템을 사용할 때 코드를 작성, 병합 및 배포하기 위해 채택하는 전략이다. 본질적으로 개발자가 공유 코드베이스와 상호 작용하는 방법을 규정하는 규칙 집합으로, 브랜치를 활용하여 코드 변경 사항을 격리하고, 병합(Merge) 과정을 통해 통합하는 방식을 활용한다. ...

September 28, 2024 · 8 min · Me