# 오우 쉿, Git? 책 출간

> Clean Markdown view of GeekNews topic #18779. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18779](https://news.hada.io/topic?id=18779)
- GeekNews Markdown: [https://news.hada.io/topic/18779.md](https://news.hada.io/topic/18779.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-18T08:34:25+09:00
- Updated: 2025-01-18T08:34:25+09:00
- Original source: [ohshitgit.com](https://ohshitgit.com/)
- Points: 4
- Comments: 1

## Topic Body

- **Git 문제 해결 방법**

  - Git은 복잡하고 실수하기 쉬운 도구로, 문제를 해결하는 방법을 찾는 것이 어렵다는 점을 강조함.
  - 여러 가지 문제 상황과 그 해결 방법을 간단한 영어로 설명함.

- **문제 상황과 해결 방법**

  - **잘못된 작업을 되돌리고 싶을 때**
    - `git reflog`를 사용하여 이전 작업 목록을 확인하고, `git reset HEAD@{index}`로 원하는 시점으로 되돌림.
  
  - **커밋 후 작은 변경이 필요할 때**
    - 변경 후 `git add .` 및 `git commit --amend --no-edit`를 사용하여 마지막 커밋에 변경 사항을 추가함.
    - 주의: 공개된 커밋은 수정하지 않음.
  
  - **마지막 커밋 메시지를 변경하고 싶을 때**
    - `git commit --amend`를 사용하여 메시지를 변경함.
  
  - **잘못된 브랜치에 커밋했을 때**
    - 새로운 브랜치를 생성하고 `git reset HEAD~ --hard`로 마스터 브랜치에서 커밋을 제거한 후, 새로운 브랜치로 이동하여 커밋을 보존함.
  
  - **diff 명령어가 작동하지 않을 때**
    - `git diff --staged`를 사용하여 스테이징된 파일의 차이를 확인함.
  
  - **이전 커밋을 되돌리고 싶을 때**
    - `git log`로 커밋을 찾고, `git revert [saved hash]`를 사용하여 해당 커밋을 되돌림.
  
  - **파일 변경을 되돌리고 싶을 때**
    - `git log`로 이전 커밋을 찾고, `git checkout [saved hash] -- path/to/file`로 파일을 되돌림.

- **기타**

  - **레포지토리를 초기 상태로 되돌리고 싶을 때**
    - `git fetch origin`, `git checkout master`, `git reset --hard origin/master`를 사용하여 원격 레포지토리와 동기화함.
    - `git clean -d --force`로 추적되지 않은 파일과 디렉토리를 삭제함.

- **주의사항**
  - 이 사이트는 포괄적인 참고 자료가 아니며, 다양한 방법이 존재할 수 있음을 언급함.
  - 번역에 참여한 여러 사람들에게 감사의 인사를 전함.

## Comments



### Comment 33563

- Author: neo
- Created: 2025-01-18T08:34:26+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42728916) 
- `git switch`를 `git checkout` 대신 사용하는 것이 좋음
- `reset --hard`를 피하고, 잘못된 브랜치에 커밋했을 때 새로운 브랜치를 생성하여 문제를 해결하는 방법 제안
  - 현재 상태에서 새로운 브랜치 생성
  - 이전 커밋으로 전환
  - master 브랜치를 해당 커밋으로 덮어쓰기
  - 작업 브랜치로 전환
- `cherry-pick`을 사용하여 잘못된 브랜치에 커밋한 경우 해결 방법 제안
  - 올바른 브랜치로 전환
  - master의 마지막 커밋 가져오기
  - master에서 삭제
- "포기" 상황에서의 git 사용 방법 제안
  - origin의 최신 상태 가져오기
  - 추적된 파일 복원
  - 추적되지 않은 파일 및 디렉토리 삭제
  - master를 원격 버전으로 재설정
- Git 학습에 UI를 기본으로 추천하는 것이 좋음
  - CLI가 더 빠르다고 느끼면 나중에 사용 가능
  - 시각적으로 트리와 상호작용하는 방법을 먼저 이해해야 함
- hg+mercurial에 대한 검색 결과가 있어 기쁨
  - hg가 dvcs 전쟁에서 패배한 것이 아쉬움
- Git 명령어의 인자를 기억하기 어려움
  - 명령어가 발견 가능하거나 쉽게 기억할 수 있는 것이 아님
- 2025년 4월에 git의 20주년을 기념할 때 이상하게 느껴질 것임
  - GitHub 효과가 새로운 VCS의 필요성을 없앴을지도 모름
- "Oh shit" 상황에서 로컬 저장소를 삭제하고 다시 클론하는 방법을 사용함
  - 95%의 경우 잘 작동함
- `git reflog`를 "re-flog"로 잘못 인식하여 기억하기 어려움
- Git 사용자가 아니지만, "git commit"이 무의미하다고 느낌
  - 커밋이 푸시되거나 병합될 때만 중요함
- Git의 장점 중 하나는 객체를 생성한 이상 작업을 잃을 수 없다는 것임
  - 자주 커밋하는 것이 중요함
