외장 SSD + GitHub Desktop을 사용해서 데스크탑, 노트북 환경에서 개발하다가 하루 종일 작업한 파일을 날릴 뻔한 이야기를 담았다. 작업 환경을 잘 설정해야 한다는 깨달음을 얻고...
집에서 개발할 때는 데스크탑을 사용하고, 밖에서 개발할 때는 노트북을 사용한다. 그러다 보니 프로젝트 파일들을 한 기기에만 저장해둘 수 없고 기기간 공유가 가능해야 했다.
처음에는 OneDrive를 사용했다. 학교 계정으로 쭉 사용하다가 어느 순간 학교 계정의 스토리지 용량이 확 줄고 나서는 개인 계정을 사용했다. OneDrive는 안전하게 데이터를 저장할 수 있다는 장점이 있지만, 속도가 느리다는 단점이 있다. 파일을 옮기는 데도 한참 걸리고, 특히 프로젝트에서 빌드하고 개발 서버를 열었을 때 필요한 파일들을 모두 다운로드 할 때까지 기다려야 한다는 점이 답답했다.
어느 날, 일부 파일이 OneDrive에서 동기화가 안 되는지 vscode 상에서 계속 오류가 났다. 폴더를 삭제하고 다시 clone해도 같은 문제가 반복되어 이대로는 안 되겠다 싶어서 방치했던 외장 SSD를 꺼내들었다.
데스크탑과 노트북의 GitHub Desktop에서 외장 SSD의 폴더에 프로젝트를 clone했다. 사실 이 부분은 정확히 기억이 안 나는데, 데스크탑에서 clone했으면 노트북에서는 Add Existing Repository 방식으로 접근했을 것이다.
오늘 사건이 터졌다. 어제 하루 종일 데스크탑에서 작업하고, 로컬에만 commit을 해두었다. 그리고 카페에 가서 노트북으로 작업을 이어서 하려고 했는데, 외장 SSD를 연결하자 어제 작업한 게 보이지 않았다. 며칠 전에 rebase 과정에서 꼬인 파일들만 남아있을 뿐, 작업한 것은 온데간데 없었다. 다른 폴더를 보고 있는 건가 싶어서 아무 생각 없이 GitHub Desktop에서 레포지토리를 삭제했다. 여기서 아차 싶었는데😅, 로컬에서만 작업한 것이었기 때문에 다시 clone했을 때는 당연히 작업한 파일들이 없었다.
정말 다행히도 레포지토리를 삭제할 때 휴지통으로 폴더를 버리는 옵션을 선택해서 삭제한 폴더는 휴지통에 남아있었다.
급하게 집으로 돌아와 데스크탑을 켜고... 휴지통에서 레포지토리를 복구했다. 그리고 커밋 기록을 되찾았다. 🫠
데스크탑은 C, D 드라이브가 모두 있기 때문에 외장 SSD가 E 드라이브로 인식되고 있었다. 하지만 노트북은 C 드라이브만 있기 때문에 외장 SSD가 D 드라이브로 인식되고 있었다.
노트북에서 삭제한 레포지토리를 복구했더니 데스크탑에서 외장 SSD(E 드라이브)가 아닌 기존의 D 드라이브로 복구되었다. 외장 SSD가 환경에 따라 드라이브 문자가 다르기 때문에 이런 현상이 일어났다.
노트북에서 작업하다가 데스크탑으로 옮겨왔을 때, E 드라이브가 아닌 D 드라이브에서 작업이 이어졌다면 데스크탑에서 작업한 것은 외장 SSD에 저장되는 것이 아닌, 데스크탑에 저장되었을 것이다. 이 때문에 동기화가 제대로 되지 않은 것으로 파악했다.
문제점을 파악하다가 위의 문제와 별개로 이전에 종종 겪었던 문제의 이유도 찾게 되었다. 노트북, 데스크탑에서 번갈아가며 작업하던 레포지토리에서 종종 파일 충돌이 일어나곤 했다. 로컬에서 나 혼자 작업했는데, 파일 충돌이라니 뜬금없다. 당시에는 작업 자체에 문제가 없었기 때문에 그냥 수정하고 넘겼지만, 이번 기회에 같이 해결해야겠다고 마음 먹었다.
그것은 바로 데스크탑과 노트북에서의 Git 로컬 설정이 달랐기 때문이다. 커밋 기록이 다르게 남기 때문에 다른 사람이 파일을 수정한 것으로 인식한 것이다.
git config --global user.name
과 git config --global user.email
명령어를 통해 설정된 사용자의 name과 email을 확인할 수 있다.
확인해 보니, 데스크탑에서는 name이 chysis
로 설정되어 있었고, 노트북에서는 Fe
로 설정되어 있었다. 최근에 노트북을 바꾸면서 다르게 설정된 것 같은데, 이것이 문제가 되었다.
1. 데스크탑, 노트북에서 인식하는 외장 SSD의 드라이브 문자를 통일
먼저, 동기화 문제를 해결하기 위해 데스크탑과 노트북에서 인식하는 외장 SSD의 드라이브 문자를 통일했다.
Win + R
에서 diskmgmt.msc
를 입력하면 디스크 관리 메뉴로 들어갈 수 있다. 거기서 외장 SSD의 드라이브 문자를 T로 수정했다. 다른 USB 기기가 연결될 경우 E, F까지는 충분히 할당될 수 있다고 판단하여, 아예 관련 없는 문자로 설정했다.
노트북에서도 마찬가지로 외장 SSD를 연결한 뒤에 드라이브 문자를 수정했다.
2. Git 로컬 설정 통일
다음으로는 커밋 충돌을 방지하기 위해 데스크탑과 노트북의 Git 로컬 설정을 통일했다.
git config --global user.name chysis
명령어를 통해 두 기기에서 user.name
을 모두 chysis로 통일했다. 이제 충돌 문제는 발생하지 않을 것이다.
3. GitHub Desktop에서 clone하지 않고 수동으로 clone 후, GitHub Desktop에서는 Add Existing Repository만 하기
외장 SSD의 폴더 경로를 확실히 인식할 수 있도록 하는, 좀 더 안정적인 방법을 선택했다. GitHub Desktop에서 clone할 경우 간편하지만 혹시라도 경로가 변경될 가능성이 있기 때문이다.
PowerShell에서 수동으로 clone했다.
이후 GitHub Desktop에서는 Add local repository만 했다. 이렇게 되면 경로는 유지한 채로 GitHub Desktop에서는 GUI만 편하게 이용할 수 있게 된다.
여러 기기에서 작업하는 만큼, 환경을 동일하게 설정해서 안전하게 작업할 수 있도록 노력해야겠다!