Add git 사용법에 대해 자주 사용하는 명령어 위주로 상세옵션까지 포함 설명.md
This commit is contained in:
113
git 사용법에 대해 자주 사용하는 명령어 위주로 상세옵션까지 포함 설명.md
Normal file
113
git 사용법에 대해 자주 사용하는 명령어 위주로 상세옵션까지 포함 설명.md
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
Git을 실제 업무나 프로젝트에서 사용할 때 가장 손에 익어야 하는 핵심 명령어들을 상세 옵션과 함께 정리해 드립니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 저장소 설정 및 시작
|
||||||
|
|
||||||
|
프로젝트를 시작하거나 서버에서 가져올 때 사용합니다.
|
||||||
|
|
||||||
|
* **`git init`**: 현재 디렉토리를 Git 저장소로 초기화합니다.
|
||||||
|
* **`git clone <url>`**: 원격 저장소를 복제합니다.
|
||||||
|
* **`-b <branch_name>`**: 특정 브랜치만 지정해서 복제할 때 사용합니다.
|
||||||
|
* **`--depth 1`**: 전체 히스토리가 아닌 최신 커밋 하나만 가져옵니다. (용량이 큰 프로젝트를 빠르게 받을 때 유용)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 작업 변경 사항 관리 (Stage & Commit)
|
||||||
|
|
||||||
|
파일의 변화를 기록하는 단계입니다.
|
||||||
|
|
||||||
|
* **`git add <file>`**: 파일을 스테이징 영역(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 <name>`**: 새 브랜치 생성.
|
||||||
|
* **`-d <name>`**: 사용이 끝난 브랜치 삭제.
|
||||||
|
|
||||||
|
|
||||||
|
* **`git checkout <branch>`**: 브랜치 이동. (최신 버전에서는 `git switch` 권장)
|
||||||
|
* **`-b <name>`**: 브랜치 생성과 동시에 이동하기.
|
||||||
|
|
||||||
|
|
||||||
|
* **`git merge <target>`**: 현재 브랜치에 대상 브랜치를 합칩니다.
|
||||||
|
* **`--no-ff`**: Fast-forward 관계라도 강제로 머지 커밋을 남겨 기록을 보존합니다.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 원격 저장소 동기화 (Remote)
|
||||||
|
|
||||||
|
외부 서버(GitHub, Gitea 등)와 데이터를 주고받습니다.
|
||||||
|
|
||||||
|
* **`git remote`**: 원격 저장소 설정.
|
||||||
|
* **`add origin <url>`**: 주소를 `origin`이라는 별명으로 등록합니다.
|
||||||
|
* **`-v`**: 현재 연결된 원격 저장소 주소 확인.
|
||||||
|
|
||||||
|
|
||||||
|
* **`git push`**: 로컬 변경 사항을 서버에 올립니다.
|
||||||
|
* **`-u origin <branch>`**: 처음 푸시할 때 사용하며, 이후엔 브랜치명 없이 `git push`만 써도 되게 설정합니다.
|
||||||
|
* **`--force` (주의!)**: 서버의 내용을 내 로컬 내용으로 강제로 덮어씁니다. (협업 시 주의)
|
||||||
|
|
||||||
|
|
||||||
|
* **`git pull`**: 서버의 내용을 가져와서 현재 브랜치에 합칩니다. (`fetch` + `merge`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 실수했을 때 되돌리기 (Undo)
|
||||||
|
|
||||||
|
지옥에서 살아 돌아오는 유용한 명령어입니다.
|
||||||
|
|
||||||
|
* **`git reset`**: 특정 시점으로 되돌아갑니다.
|
||||||
|
* **`--soft`**: 커밋만 취소하고 수정된 파일 내용은 그대로 둡니다.
|
||||||
|
* **`--mixed` (기본값)**: 커밋과 `add` 모두 취소하지만 파일 내용은 유지합니다.
|
||||||
|
* **`--hard`**: 해당 커밋 이후의 모든 변경 사항을 **완전히 삭제**합니다.
|
||||||
|
|
||||||
|
|
||||||
|
* **`git revert <commit_id>`**: 기존 커밋을 삭제하는 대신, **반대되는 커밋을 새로 만들어** 안전하게 되돌립니다. (협업 중인 서버에 이미 올라간 커밋을 취소할 때 필수)
|
||||||
|
* **`git stash`**: 하던 작업을 잠시 임시 보관함에 치워둡니다. (브랜치를 급하게 바꿔야 할 때 유용)
|
||||||
|
* **`pop`**: 마지막에 저장한 작업을 다시 꺼내옵니다.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 💡 실무 팁: 한 줄 요약 루틴
|
||||||
|
|
||||||
|
보통 출근해서는 `pull`로 시작하고, 퇴근 전에는 `add` -> `commit` -> `push` 순서로 마무리하는 습관을 들이는 것이 좋습니다.
|
||||||
|
|
||||||
|
혹시 이 중에서 **`git rebase`** 처럼 좀 더 심화된 커밋 정리 방법이 궁금하신가요? 아니면 특정 상황(예: 잘못 push한 파일 지우기 등)에 대한 해결책이 필요하신가요?
|
||||||
Reference in New Issue
Block a user