Git/[인강] Git & Github 실무 활용 완벽 가이드

[Git & Github] 19-1. dangling commit 이란?

pakms980319 2025. 5. 2. 17:18

dangling commit 

어떤 브랜치나 태그 등에서 더 이상 참조되지 않는 커밋을 말한다.

쉽게 말하면, Git 저장소 안에는 존재하지만 어디에서도 가리키고 있지 않기 때문에 보이지 않는 커밋이다.

 


🔍 왜 생기는 걸까?

  • git commit 후, rebase나 reset으로 HEAD를 되돌렸을 때
  • git rebase -i로 커밋을 삭제(drop) 했을 때
  • 브랜치를 삭제했는데, 해당 브랜치에만 있던 커밋이 다른 브랜치와 공유되지 않았을 때

이런 경우 기존 커밋은 Git 내부에는 아직 존재하지만, HEAD도 브랜치도 더 이상 그 커밋을 가리키지 않게 된다.

→ 즉, dangling 상태


🕵️‍♀️ 확인 방법

git fsck --lost-found

 

이 명령은 Git 저장소 내에서 dangling commit 등을 찾아 보여준다.

dangling commit 3f1c2e15b7f5d8c1d9e0ee81a3a0fa4c3c4ad5a2

 

해당 커밋은 Git 내부에는 존재하지만, 브랜치나 태그에서는 접근할 수 없는 "유령 커밋'이다.


🔁 복구 방법

복구 시점을 참조 할 수 있는 커밋 혹은 항목을 알고 있다면 언제든지 복구 가능하다.

 

1) reflog show를 사용하여 복구를 할 작업 시점 항목을 찾을 수 있다.

git reflog show <ref>

 

2) reset --hard를 통해 사라진 커밋을 복구할 수 있다.

git reset --hard HEAD~N

 


🧹 사라질 수도 있다

이전 reflog 글에서 reflog 보존 기간동안 사라진 커밋을 복구 할 수 있다고 했지만 Git의 가비지 컬렉션(GC) 또한 고려를 해야한다.

기본적으로 30일간 참조되지 않으면 깃의 가비지 컬렉션(GC)이 자동으로 삭제 할 수도 있기때문에 필요하다면 옵션을 미리 조정을 해야 한다.

 

수동으로 직접 dangling commit을 삭제하고싶다면?

git gc

 

이 명령을 수동으로 실행하면 dangling commit을 삭제 할 수 있다.

 


참고

 

1) https://2hyes.tistory.com/168

 

Git: dangling commit이란?

깃이 필수인 세상, 이제는 모를 수 없다 ! - 사실 학교에서 git을 활용해서 프로젝트하는 과목을 안들어서, 내 맘대로 쓰고있었지만 어찌보면 뜬금없이 통계학과에서 프로젝트 수업을 들으면서 gi

2hyes.tistory.com