전체 글

공부 기록을 남기며 게시글 리팩토링을 진행하는 블로그입니다.
독서

모던 리눅스 교과서 정리 (1장 ~ 4장)

모던 리눅스 교과서를 드디어 완독했다. 오로지 본인이 기억하고 싶고, 중요하다고 생각했던 부분을 정리할 예정이다. 리눅스가 운영체제이므로 운영체제에 대한 기초적인 내용(ex 시스템 콜 기본, 운영체제 기본)이 나오는데 이와 같은 분을 생략할 예정이다. 1장. 리눅스 소개 리눅스는 유닉스의 전통을 따라 기본적으로 리소스의 전역 보기(글로벌 뷰)를 지원한다. 리소스란 소프퉤어 실행을 지원하는데 사용할 수 있는 모든 것을 말한다. 예를 들어 하드웨어와 그 추상화(CPU, RAM, 파일), 파일 시스템, HDD, SSD, 프로세스, 디바이스나 라웉이 테이블 같은 네트워킹 관련 항목, 사용자를 나타내는 자격증명이 포함된다. 리눅스는 프로세스 ID를 사용해 프로세스를 식별한다. 동일한 PID를 가진 프로세스가 리눅..

Git

Git rebase

브랜치를 합치는 방법은 두 가지가 있다. 병합(merge)과 리베이스(rebase)다. 이번에는 커밋 순서를 재배열하는 리베이스에 대해 알아보겠다. Base 브랜치는 커밋 하나를 기준으로 새로운 작업을 진행할 수 있는 분리된 작업 경로를 말한다. 새로운 브랜치가 파생되는 커밋을 베이스라고 한다. 병합에서는 이를 공통 조상 커밋이라고 한다. 아래 그림에서는 커밋 2가 베이스이자, 공통 조상 커밋이다. Rebase 리베이스는 베이스 앞에 '다시'를 의미하는 re가 붙은 단어다. 파생된 브랜치의 기준이 되는 베이스 커밋을 변경하는 것이다. 그럼 브랜치의 베이스는 왜 변경하는 것일까? 커밋의 진행 모습을 단순화하기 위해서다. 브랜치가 많아지면 커밋을 관리하고 파악하기 어렵다. 꼬여 있는 기찻길처럼 단계별로 커밋..

Git

Git 병합 (Fast-Forward 병합, 3-way 병합)

병합 프로젝트에서 main 브랜치가 존재한다. 그럼 다른 브랜치에서 작업을 하고 이를 main 브랜치에 반영해야 한다. 분리된 브랜치를 하나의 브랜치로 합치는 작업을 병합이라고 한다. 각각의 브랜치에서 수정된 내용을 하나의 브랜치로 병합한다. 과거 수동(노가다)으로 코드를 하나하나 바꾸는 것은 정말 어렵고 귀찮은 일이었다. 깃을 사용해 자동 병합이 가능해지며 개발자의 삶이 윤택해졌다. 깃의 자동 병합은 원본을 기준으로 두 파일의 변경 이력을 비교하고, 변경된 파일 내용이 발견되면 자동으로 수정된 코드 내용을 병합한다. 그러나 자동으로 병합이 불가능한 것도 존재하는데, 이를 충돌이라고 한다. 병합 방식 병합 방식으로는 크게 2가지가 있다. Fast-Forward 병합 3-way 병합 실습 환경을 구축해보겠..

Git

Git Stash

Git Stash 개념 어떤 작업 내용을 개발자가 커밋했다. 이후 다른 업무로 인해 코드를 작성하다가 다른 브랜치로 이동하고 싶어졌다. 바로 git checkout과 switch를 쓰면 다른 브랜치로 이동할 수 있을까? 아쉽게도 그렇지 않다. 커밋하지 않은 코드가 남아있으므로 다른 브랜치로 이동이 불가능하다. 그럼 어떻게 코드를 작성하다가 다른 브랜치로 편하게 넘어갈 수 있을까? 이런 상황에서 스태시(stash)기능을 사용한다. stash를 번역기에 돌려보니 은닉처라고 나온다. 깃은 커밋되지 않은 변경 내용이 남아 있을 때, 현재 작업을 임시로 저장할 수 있는 스태시 기능을 제공한다. 스태시는 현재 워킹 디렉터리 내역을 별도의 스택 영역에 저장해 브랜치가 이동할 때 작업 중인 내용으로 워킹 디렉터리가 충..

Debin
리팩토링하는 블로그