4P by neo 1달전 | ★ favorite | 댓글 1개
  • 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 switchgit 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의 장점 중 하나는 객체를 생성한 이상 작업을 잃을 수 없다는 것임
    • 자주 커밋하는 것이 중요함