오우 쉿, Git? 책 출간
(ohshitgit.com)- 
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로 추적되지 않은 파일과 디렉토리를 삭제함. 
 - 
 
 - 
레포지토리를 초기 상태로 되돌리고 싶을 때
 - 
주의사항
- 이 사이트는 포괄적인 참고 자료가 아니며, 다양한 방법이 존재할 수 있음을 언급함.
 - 번역에 참여한 여러 사람들에게 감사의 인사를 전함.
 
 
Hacker News 의견
- 
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의 장점 중 하나는 객체를 생성한 이상 작업을 잃을 수 없다는 것임
- 자주 커밋하는 것이 중요함