본문으로 건너뛰기
툴허브

개발자 치트시트

Git, Linux, Docker, SQL 등 8개 분야 220개 개발 필수 명령어

전체 명령어: 218북마크: 0
난이도:
📦GitGit35
git init

새 Git 저장소를 초기화합니다

git clone <url>

원격 저장소를 복제합니다

git status

작업 디렉토리의 상태를 확인합니다

git add <file>

파일을 스테이지에 추가합니다

git add -p

변경사항을 부분별로 스테이지에 추가합니다

git commit -m "<message>"

스테이지된 변경사항을 커밋합니다

git commit --amend

마지막 커밋을 수정합니다

git branch

브랜치 목록을 확인합니다

git branch <name>

새 브랜치를 생성합니다

git branch -d <name>

브랜치를 삭제합니다 (병합된 경우만)

git checkout <branch>

브랜치를 전환합니다

git switch <branch>

브랜치를 전환합니다 (checkout 대체)

git merge <branch>

브랜치를 현재 브랜치에 병합합니다

git rebase <branch>

현재 브랜치를 대상 브랜치 위로 재배치합니다

git push

로컬 커밋을 원격에 업로드합니다

git pull

원격 변경사항을 가져와 병합합니다

git fetch

원격 변경사항을 가져오되 병합하지 않습니다

git remote -v

원격 저장소 목록을 확인합니다

git remote add <name> <url>

원격 저장소를 추가합니다

git reset --soft HEAD~1

마지막 커밋을 취소하고 변경사항은 유지합니다

git reset --hard HEAD~1

마지막 커밋을 취소하고 변경사항도 삭제합니다

git revert <commit>

특정 커밋을 취소하는 새 커밋을 생성합니다

git stash

변경사항을 임시 저장합니다

git stash pop

임시 저장한 변경사항을 복원합니다

git cherry-pick <commit>

특정 커밋을 현재 브랜치에 적용합니다

git log --oneline

커밋 히스토리를 한 줄씩 확인합니다

git diff

스테이지되지 않은 변경사항을 확인합니다

git show <commit>

특정 커밋의 상세 정보를 확인합니다

git blame <file>

파일의 각 줄을 마지막으로 수정한 사람을 확인합니다

git reflog

HEAD의 이동 기록을 확인합니다 (복구용)

git tag <name>

태그를 생성합니다 (버전 표시용)

git config --global user.name "<name>"

Git 사용자 이름을 설정합니다

git bisect start

이진 탐색으로 버그 발생 커밋을 찾습니다

git clean -fd

추적되지 않는 파일과 디렉토리를 삭제합니다

git archive --format=zip HEAD -o archive.zip

현재 커밋을 ZIP 아카이브로 내보냅니다

🐧LinuxLinux42
ls -la

파일 목록을 상세히 표시합니다 (숨김 파일 포함)

cd <directory>

디렉토리를 이동합니다

pwd

현재 디렉토리 경로를 표시합니다

mkdir -p <directory>

디렉토리를 생성합니다 (중간 경로 포함)

rm -rf <path>

파일/디렉토리를 강제 재귀적으로 삭제합니다

cp -r <source> <dest>

파일/디렉토리를 복사합니다

mv <source> <dest>

파일/디렉토리를 이동하거나 이름을 변경합니다

touch <file>

빈 파일을 생성하거나 수정 시간을 변경합니다

find <path> -name "<pattern>"

파일을 이름 패턴으로 검색합니다

locate <filename>

파일 데이터베이스에서 빠르게 검색합니다

cat <file>

파일 내용을 출력합니다

head -n <N> <file>

파일의 처음 N줄을 출력합니다

tail -f <file>

파일의 끝부분을 실시간으로 추적합니다

less <file>

파일을 페이지 단위로 읽습니다

grep -rn "<pattern>" <path>

파일에서 문자열을 재귀적으로 검색합니다

sed -i 's/old/new/g' <file>

파일에서 문자열을 치환합니다

awk '{print $1, $3}' <file>

텍스트 필드를 추출하고 처리합니다

sort <file>

파일 내용을 정렬합니다

uniq

연속된 중복 줄을 제거합니다

wc -l <file>

파일의 줄 수를 세니다

chmod <permissions> <file>

파일 권한을 변경합니다

chown <user>:<group> <file>

파일 소유자를 변경합니다

chgrp <group> <file>

파일 그룹을 변경합니다

ps aux

실행 중인 모든 프로세스를 표시합니다

top

시스템 리소스 사용량을 실시간으로 모니터링합니다

kill -9 <PID>

프로세스를 강제 종료합니다

nohup <command> &

터미널 종료 후에도 프로세스를 실행 유지합니다

ssh <user>@<host>

원격 서버에 SSH 접속합니다

scp <file> <user>@<host>:<path>

원격 서버로 파일을 복사합니다

curl <url>

URL에서 데이터를 전송/수신합니다

wget <url>

파일을 다운로드합니다

ping <host>

호스트의 네트워크 연결을 확인합니다

netstat -tulpn

열려있는 포트와 연결을 확인합니다

df -h

디스크 사용량을 확인합니다

du -sh <path>

디렉토리 크기를 확인합니다

free -h

메모리 사용량을 확인합니다

uname -a

시스템 정보를 표시합니다

whoami

현재 로그인된 사용자 이름을 표시합니다

tar -czf <archive>.tar.gz <files>

tar.gz 압축 파일을 생성합니다

tar -xzf <archive>.tar.gz

tar.gz 압축을 해제합니다

zip -r <archive>.zip <files>

ZIP 압축 파일을 생성합니다

unzip <archive>.zip

ZIP 압축을 해제합니다

🐳DockerDocker24
docker run -d -p <host>:<container> <image>

컨테이너를 백그라운드로 실행합니다

docker ps

실행 중인 컨테이너 목록을 표시합니다

docker stop <container>

컨테이너를 정지합니다

docker start <container>

정지된 컨테이너를 시작합니다

docker rm <container>

컨테이너를 삭제합니다

docker exec -it <container> <command>

실행 중인 컨테이너에서 명령을 실행합니다

docker logs -f <container>

컨테이너 로그를 실시간으로 확인합니다

docker inspect <container>

컨테이너의 상세 정보를 확인합니다

docker build -t <name>:<tag> .

Dockerfile에서 이미지를 빌드합니다

docker pull <image>

레지스트리에서 이미지를 다운로드합니다

docker push <image>

이미지를 레지스트리에 업로드합니다

docker images

로컬 이미지 목록을 표시합니다

docker rmi <image>

이미지를 삭제합니다

docker tag <image> <new-tag>

이미지에 새 태그를 추가합니다

docker volume create <name>

볼륨을 생성합니다

docker volume ls

볼륨 목록을 표시합니다

docker network create <name>

커스텀 네트워크를 생성합니다

docker network ls

네트워크 목록을 표시합니다

docker compose up -d

모든 서비스를 백그라운드로 시작합니다

docker compose down

모든 서비스를 정지하고 컨테이너를 제거합니다

docker compose build

모든 서비스 이미지를 빌드합니다

docker compose logs -f <service>

서비스 로그를 실시간으로 확인합니다

docker compose ps

Compose 서비스 상태를 확인합니다

docker compose exec <service> <command>

실행 중인 서비스에서 명령을 실행합니다

🗄️SQLSQL29
SELECT column1, column2 FROM table_name;

테이블에서 데이터를 조회합니다

SELECT * FROM table WHERE condition;

조건에 맞는 데이터만 조회합니다

SELECT * FROM table ORDER BY column ASC|DESC;

결과를 정렬합니다

SELECT column, COUNT(*) FROM table GROUP BY column;

데이터를 그룹별로 집계합니다

SELECT column, COUNT(*) FROM table GROUP BY column HAVING COUNT(*) > N;

그룹화된 결과에 조건을 적용합니다

INSERT INTO table (col1, col2) VALUES (val1, val2);

테이블에 새 데이터를 삽입합니다

UPDATE table SET column = value WHERE condition;

기존 데이터를 수정합니다

DELETE FROM table WHERE condition;

조건에 맞는 데이터를 삭제합니다

CREATE TABLE table_name ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL );

새 테이블을 생성합니다

ALTER TABLE table_name ADD column_name datatype;

테이블 구조를 변경합니다

DROP TABLE table_name;

테이블을 삭제합니다

SELECT * FROM a INNER JOIN b ON a.id = b.a_id;

두 테이블의 일치하는 행만 결합합니다

SELECT * FROM a LEFT JOIN b ON a.id = b.a_id;

왼쪽 테이블의 모든 행과 일치하는 오른쪽 행을 결합합니다

SELECT * FROM a RIGHT JOIN b ON a.id = b.a_id;

오른쪽 테이블의 모든 행과 일치하는 왼쪽 행을 결합합니다

SELECT * FROM a FULL OUTER JOIN b ON a.id = b.a_id;

양쪽 테이블의 모든 행을 결합합니다

SELECT col FROM table1 UNION SELECT col FROM table2;

두 쿼리 결과를 합칩니다 (중복 제거)

SELECT COUNT(*) FROM table;

행의 개수를 세니다

SELECT SUM(col), AVG(col) FROM table;

합계와 평균을 계산합니다

SELECT MIN(col), MAX(col) FROM table;

최솟값과 최댓값을 구합니다

CREATE INDEX idx_name ON table(column);

인덱스를 생성하여 조회 속도를 높입니다

CREATE VIEW view_name AS SELECT ...;

뷰를 생성합니다 (가상 테이블)

CREATE TRIGGER trigger_name AFTER INSERT ON table FOR EACH ROW ...;

트리거를 생성합니다 (이벤트 기반 자동 실행)

SELECT DISTINCT column FROM table;

중복을 제거하고 고유값만 조회합니다

SELECT * FROM table LIMIT N OFFSET M;

결과의 개수를 제한하고 페이징합니다

SELECT CASE WHEN condition THEN 'A' ELSE 'B' END FROM table;

조건별 값을 분기합니다 (IF-ELSE)

SELECT COALESCE(column, default_value) FROM table;

NULL이면 기본값을 반환합니다

SELECT * FROM table WHERE col IN (SELECT col FROM other_table);

서브쿼리를 사용하여 조건을 지정합니다

SELECT * FROM a WHERE EXISTS (SELECT 1 FROM b WHERE b.a_id = a.id);

서브쿼리 결과가 존재하는지 확인합니다

SELECT col, ROW_NUMBER() OVER (ORDER BY col) FROM table;

윈도우 함수로 순위/누적값을 계산합니다

📝VimVim26
i

커서 위치에서 입력 모드로 전환

a

커서 다음 위치에서 입력 모드로 전환

o

아래에 새 줄을 추가하고 입력 모드로 전환

v / V

비주얼 모드 (문자/줄 단위 선택)

Esc

노멀 모드로 복귀

h / j / k / l

왼쪽 / 아래 / 위 / 오른쪽 이동

w / b

다음 / 이전 단어로 이동

0 / $

줄의 처음 / 끝으로 이동

gg / G

파일의 처음 / 끝으로 이동

Ctrl+d / Ctrl+u

반 페이지 아래 / 위로 스크롤

x

커서 위치의 문자를 삭제

dd

현재 줄을 삭제 (잘라내기)

yy

현재 줄을 복사 (yank)

p

붙여넣기

u

실행 취소 (Undo)

Ctrl+r

다시 실행 (Redo)

ciw

현재 단어를 삭제하고 입력 모드로 전환

/<pattern>

패턴을 검색합니다

n / N

다음 / 이전 검색 결과로 이동

:%s/old/new/g

파일 전체에서 문자열을 치환합니다

:w

파일을 저장합니다

:q

Vim을 종료합니다

:wq

저장하고 종료합니다

:q!

저장하지 않고 강제 종료합니다

qa ... q

매크로를 레지스터 a에 녹화합니다

@a

레지스터 a의 매크로를 실행합니다

🌐HTTP 상태코드HTTP Status22
100 Continue

요청의 초기 부분이 수신되었으며 계속 요청해도 됩니다

101 Switching Protocols

서버가 프로토콜 전환을 승인했습니다 (WebSocket 등)

200 OK

요청이 성공적으로 처리되었습니다

201 Created

요청이 성공하여 새 리소스가 생성되었습니다

204 No Content

요청이 성공했지만 반환할 내용이 없습니다

301 Moved Permanently

리소스가 영구적으로 이동되었습니다

302 Found

리소스가 임시적으로 이동되었습니다

304 Not Modified

리소스가 변경되지 않아 캐시된 버전을 사용합니다

400 Bad Request

잘못된 요청입니다 (구문 오류, 유효성 검증 실패)

401 Unauthorized

인증이 필요합니다 (로그인 필요)

403 Forbidden

권한이 없습니다 (인증되었지만 접근 불가)

404 Not Found

리소스를 찾을 수 없습니다

405 Method Not Allowed

허용되지 않는 HTTP 메서드입니다

408 Request Timeout

요청 시간이 초과되었습니다

409 Conflict

요청이 현재 서버 상태와 충돌합니다

413 Payload Too Large

요청 본문이 너무 큽니다

422 Unprocessable Entity

구문은 올바르지만 의미적으로 처리할 수 없습니다

429 Too Many Requests

요청이 너무 많습니다 (Rate Limit 초과)

500 Internal Server Error

서버 내부 오류가 발생했습니다

502 Bad Gateway

게이트웨이/프록시 서버가 잘못된 응답을 받았습니다

503 Service Unavailable

서비스를 사용할 수 없습니다 (유지보수/과부하)

504 Gateway Timeout

게이트웨이 시간 초과입니다

🎨CSS Flexbox/GridCSS Flexbox/Grid20
display: flex;

플렉스 컨테이너를 활성화합니다

flex-direction: row | column | row-reverse | column-reverse;

플렉스 아이템의 배치 방향을 설정합니다

justify-content: flex-start | center | flex-end | space-between | space-around | space-evenly;

주 축(main axis) 방향 정렬을 설정합니다

align-items: stretch | flex-start | center | flex-end | baseline;

교차 축(cross axis) 방향 정렬을 설정합니다

flex-wrap: nowrap | wrap | wrap-reverse;

플렉스 아이템의 줄바꿈을 설정합니다

gap: 16px;

플렉스/그리드 아이템 간 간격을 설정합니다

flex-grow: 1;

아이템이 남은 공간을 차지하는 비율을 설정합니다

flex-shrink: 0;

아이템이 축소되는 비율을 설정합니다 (0=축소 불가)

flex-basis: 200px;

아이템의 기본 크기를 설정합니다

align-self: auto | flex-start | center | flex-end | stretch;

개별 아이템의 교차 축 정렬을 설정합니다

display: grid;

그리드 컨테이너를 활성화합니다

grid-template-columns: repeat(3, 1fr);

그리드 열(column) 구조를 정의합니다

grid-template-rows: auto 1fr auto;

그리드 행(row) 구조를 정의합니다

grid-area: header;

아이템을 명명된 그리드 영역에 배치합니다

grid-column: 1 / 3;

아이템이 차지하는 열 범위를 설정합니다

place-items: center;

그리드 아이템을 셀 안에서 가운데 정렬합니다

grid-auto-flow: row | column | dense;

그리드 아이템의 자동 배치 방향을 설정합니다

grid-gap: 16px 24px;

그리드 행/열 간격을 설정합니다 (gap과 동일)

grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));

반응형 그리드 레이아웃을 만듭니다 (minmax)

order: -1 | 0 | 1;

플렉스/그리드 아이템의 시각적 순서를 변경합니다

🔍정규표현식Regex20
.

줄바꿈을 제외한 임의의 문자 1개와 일치

^

문자열의 시작과 일치

$

문자열의 끝과 일치

*

앞의 패턴이 0회 이상 반복

+

앞의 패턴이 1회 이상 반복

?

앞의 패턴이 0회 또는 1회

{n,m}

앞의 패턴이 n회~m회 반복

[abc]

문자 클래스 — 대괄호 안의 문자 중 하나와 일치

(pattern)

캡처 그룹 — 패턴을 그룹화하고 캡처

a|b

OR — 왼쪽 또는 오른쪽 패턴과 일치

\

특수 문자를 이스케이프하여 리터럴로 일치

\d

숫자 1개와 일치 ([0-9]와 동일)

\w

단어 문자 1개와 일치 ([a-zA-Z0-9_]와 동일)

\s

공백 문자 1개와 일치 (스페이스, 탭, 줄바꿈)

\b

단어 경계와 일치 (단어의 시작/끝)

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

이메일 주소 패턴

https?:\/\/[\w\-]+(\.[\w\-]+)+[\/\w\-._~:/?#[\]@!$&'()*+,;=%]*

URL 패턴 (HTTP/HTTPS)

01[016789]-?\d{3,4}-?\d{4}

한국 휴대폰 번호 패턴

\b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b

IPv4 주소 패턴 (0.0.0.0 ~ 255.255.255.255)

\d{4}[-/]\d{2}[-/]\d{2}

날짜 패턴 (YYYY-MM-DD 또는 YYYY/MM/DD)