diff --git a/git 사용법에 대해 자주 사용하는 명령어 위주로 상세옵션까지 포함 설명.md b/git 사용법에 대해 자주 사용하는 명령어 위주로 상세옵션까지 포함 설명.md new file mode 100644 index 0000000..615898f --- /dev/null +++ b/git 사용법에 대해 자주 사용하는 명령어 위주로 상세옵션까지 포함 설명.md @@ -0,0 +1,113 @@ +Git을 실제 업무나 프로젝트에서 사용할 때 가장 손에 익어야 하는 핵심 명령어들을 상세 옵션과 함께 정리해 드립니다. + +--- + +## 1. 저장소 설정 및 시작 + +프로젝트를 시작하거나 서버에서 가져올 때 사용합니다. + +* **`git init`**: 현재 디렉토리를 Git 저장소로 초기화합니다. +* **`git clone `**: 원격 저장소를 복제합니다. +* **`-b `**: 특정 브랜치만 지정해서 복제할 때 사용합니다. +* **`--depth 1`**: 전체 히스토리가 아닌 최신 커밋 하나만 가져옵니다. (용량이 큰 프로젝트를 빠르게 받을 때 유용) + + + +--- + +## 2. 작업 변경 사항 관리 (Stage & Commit) + +파일의 변화를 기록하는 단계입니다. + +* **`git add `**: 파일을 스테이징 영역(Index)에 올립니다. +* **`git add .`**: 수정된 모든 파일을 한꺼번에 올립니다. +* **`git add -p`**: 파일 내의 수정 사항을 **부분적으로(Hunk 단위)** 선택해서 올릴 수 있습니다. (강력 추천!) + + +* **`git commit`**: 버전을 생성합니다. +* **`-m "message"`**: 에디터를 열지 않고 바로 커밋 메시지를 작성합니다. +* **`--amend`**: **마지막 커밋을 수정**합니다. (메시지 오타나 빠뜨린 파일을 추가할 때 사용) + + + +--- + +## 3. 상태 확인 및 이력 조회 + +현재 상황이 어떤지, 과거에 무슨 일이 있었는지 확인합니다. + +* **`git status`**: 현재 작업 트리와 스테이징 영역의 상태를 보여줍니다. +* **`git log`**: 커밋 히스토리를 조회합니다. +* **`--oneline`**: 커밋 한 줄로 요약해서 보기. +* **`--graph --all`**: 브랜치 흐름을 시각적인 그래프로 보기. +* **`-p`**: 각 커밋의 실제 코드 변경 사항(diff)까지 포함해서 보기. + + +* **`git diff`**: 수정 사항 비교. +* **`git diff --staged`**: `add`된 파일과 마지막 커밋의 차이점을 확인합니다. + + + +--- + +## 4. 브랜치와 병합 (Branch & Merge) + +독립적인 작업 공간을 만들고 합칩니다. + +* **`git branch`**: 브랜치 목록 보기. +* **`git branch `**: 새 브랜치 생성. +* **`-d `**: 사용이 끝난 브랜치 삭제. + + +* **`git checkout `**: 브랜치 이동. (최신 버전에서는 `git switch` 권장) +* **`-b `**: 브랜치 생성과 동시에 이동하기. + + +* **`git merge `**: 현재 브랜치에 대상 브랜치를 합칩니다. +* **`--no-ff`**: Fast-forward 관계라도 강제로 머지 커밋을 남겨 기록을 보존합니다. + + + +--- + +## 5. 원격 저장소 동기화 (Remote) + +외부 서버(GitHub, Gitea 등)와 데이터를 주고받습니다. + +* **`git remote`**: 원격 저장소 설정. +* **`add origin `**: 주소를 `origin`이라는 별명으로 등록합니다. +* **`-v`**: 현재 연결된 원격 저장소 주소 확인. + + +* **`git push`**: 로컬 변경 사항을 서버에 올립니다. +* **`-u origin `**: 처음 푸시할 때 사용하며, 이후엔 브랜치명 없이 `git push`만 써도 되게 설정합니다. +* **`--force` (주의!)**: 서버의 내용을 내 로컬 내용으로 강제로 덮어씁니다. (협업 시 주의) + + +* **`git pull`**: 서버의 내용을 가져와서 현재 브랜치에 합칩니다. (`fetch` + `merge`) + +--- + +## 6. 실수했을 때 되돌리기 (Undo) + +지옥에서 살아 돌아오는 유용한 명령어입니다. + +* **`git reset`**: 특정 시점으로 되돌아갑니다. +* **`--soft`**: 커밋만 취소하고 수정된 파일 내용은 그대로 둡니다. +* **`--mixed` (기본값)**: 커밋과 `add` 모두 취소하지만 파일 내용은 유지합니다. +* **`--hard`**: 해당 커밋 이후의 모든 변경 사항을 **완전히 삭제**합니다. + + +* **`git revert `**: 기존 커밋을 삭제하는 대신, **반대되는 커밋을 새로 만들어** 안전하게 되돌립니다. (협업 중인 서버에 이미 올라간 커밋을 취소할 때 필수) +* **`git stash`**: 하던 작업을 잠시 임시 보관함에 치워둡니다. (브랜치를 급하게 바꿔야 할 때 유용) +* **`pop`**: 마지막에 저장한 작업을 다시 꺼내옵니다. + + + +--- + +### 💡 실무 팁: 한 줄 요약 루틴 + +보통 출근해서는 `pull`로 시작하고, 퇴근 전에는 `add` -> `commit` -> `push` 순서로 마무리하는 습관을 들이는 것이 좋습니다. + +혹시 이 중에서 **`git rebase`** 처럼 좀 더 심화된 커밋 정리 방법이 궁금하신가요? 아니면 특정 상황(예: 잘못 push한 파일 지우기 등)에 대한 해결책이 필요하신가요? \ No newline at end of file