반응형

후... git checkout 를 했더니 수 많은 파일이 overwrriten 되었다. 내 몇 안되는 지식으로는 checkout했을 때 왜 이런 현상이 발생하는 지 애하가 가지 않았다. 커밋이 되지 않은 파일은 체크아웃 된 브랜치로 딸려오고, 커밋된 경우에는 스무스하게 스위칭되야한다고 생각했다. 내가 이해했던 현상과 진짜 원인을 알아보자.


내가 이해했던 현상

로컬 브랜치에 아래 파일들 작업 후 commit


- add => new_file.java

- delete => deleted_file.java

- modify => modified_file.java

IDEA를 통해 리모트에 있는 브랜치로 checkout했다가 다시 기존에 작업중이던 브랜치로 checkout 시 에러 발생

git checkout 다른브랜치명

git checkout 기존에작업중이던브랜치명
=> error: Your local changes to the following files would be overwritten by checkout:

실제 원인

1. 로컬 브랜치 admin 에 아래 파일 작업 후 commit


add => new_file.java

delete => deleted_file.java

modify => modified_file.java

2. 다른 동료가 리모트에 있는 admin 브랜치 삭제 후, admin/dev 브랜치 생성


로컬
ㄴadmin

origin
ㄴadmin (removed)

ㄴadmin/dev (created)

3. 새로 생성된 /admin/dev 브랜치로 checkout 시 파일들이 덮어쓰기되는 현상 발생


git checkout origin/admin/dev

로컬
ㄴadmin

ㄴadmin/dev (checkout failed)

=> checkout은 실패했지만 admin/dev에 작업된 파일들이 로컬로 땡겨와짐

4. 파일들이 생성된 걸 눈치채지 못하고 로컬의 admin 브랜치로 다시 체크아웃

git checkout admin
=> error: Your local changes to the following files would be overwritten by checkout:

5. 어리둥절

 

 

참고 : https://stackoverflow.com/questions/2527355/using-the-slash-character-in-git-branch-name

 

Using the slash character in Git branch name

I'm pretty sure I saw somewhere in a popular Git project the branches had a pattern like "feature/xyz". However when I try to create a branch with the slash character, I get an error: $ git branc...

stackoverflow.com


알게 된 것

- git 브랜치명과 폴더명이 중복되어서는 안된다.

- 인텔리제이는 git command 이력을 저장해준다.

- 공부하지 않은 채 현상만 보고 원인을 찾으려 한다면 오백프로 헤맨다.

- stackoverflow에 허접한 질문을 올리면 감점당한다.

반응형