캡스톤 디자인 과목을 통해 졸업 작품 프로젝트를 열심히 하다가 커밋 기록이(흔히 말하는 잔디밭) 누락된 것을 확인하게 되었다. 그로 인해 올해 초반의 내 잔디밭은 사막이 되어 있었다. 원인을 알아본 결과 지금 상황에서는 해결을 할 수 없다는 것을 깨닫고 일단은 넘어갔다.
최근 들어 알고리즘 공부를 시작했다. 동기 부여도 하고 기록도 남길 겸 GitHub에 알고리즘 Repository를 만들고 commit을 하다가 또 한 번 잔디가 심어지지 않는 현상을 발견했다. 이는 해결을 하였고 해결 방법을 포스팅하겠다.
원인 & 해결 방법
1. Main Branch 에서 작업하지 않았거나 현재 Branch가 default가 아닌 경우
보통은 Main Branch가 default이고 이 브랜치에 작업 후 push 한 경우 잔디밭에 반영이 된다.
하지만 현재 작업하고 있는 branch가 (예를 들어) develop이라면 추후 default로 설정된 Main Branch에 push 하면 그제야 잔디밭에 반영이 된다. 나의 졸업 작품이 이에 해당한다.
하지만 자신이 commit 한 내용을 즉각적으로 잔디밭에 심고 싶다면 default 브랜치를 변경하면 된다. 방법은 아래와 같다.
✅ Default 브랜치 변경하는 방법
- 해당 GitHub Repository → 상단의 Settings 클릭 → Branchs → switch to another branch 클릭 → 원하는 branch 선택
2. GitHub 계정에 등록된 이메일과 local 환경의 이메일 설정이 다른 경우
이 원인과 같은 경우에는 많은 사람들이 포스팅을 했다. 다만 나는 Git이 최신 버전이라 그런지 많은 포스팅을 보고도 해결이 안 되었고 다음과 같은 과정들을 통해 해결할 수 있었다.
1. GitHub - Settings
2. Emails - 등록된 Email 확인
3. local 환경의 Git에 등록된 Email 확인
- 아래 명령어를 사용해서 local 환경의 Git에 등록된 Email을 확인한다.
git config --list
4. GitHub에서 사용한 Email과 다르다면 Email 변경
- 현재 작업 중인 폴더의 Email 변경
git config user.email "내 이메일 주소"
- local 환경의 Git 전체의 Email 변경
git config --global user.Email "내 이메일 주소"
- 이로써 앞으로의 commit들은 잔디밭에 잘 심어질 것이다.
3. 누락된 Commit들을 잔디밭에 심어주기
- rebase 명령어를 통해서 해결할 수 있다.
1. 잔디밭에 누락된 Commit의 해시코드 찾기
git log --pretty=format:"%h = %an, %ar : %s" --graph
- 로그를 보고 잔디밭에 누락된 commit 앞에 표기되어 있는 해시코드를 기억한다.
2. 해시코드로 rebase 명령어 사용하기
git rebase -i -r 해시코드
- Git 이전 버전에서는 -r 이 아닌 -p 를 입력해주어야 했었다. 이것 때문에 꽤 많이 헤매었었다.
- edit, pick 으로 출력되는 화면이 나오면 a를 입력하여 수정 모드로 전환한 뒤 누락되었던 commit 들을 pick -> edit로 바꾸어 준다.
- 그 후 ':' 를 입력한 뒤 wq를 입력하고 빠져나온다.
3. Commit 에 사용된 Email 설정 변경
git commit --amend --author="이름 <본인 이메일>"
- 아까와 같이 에디터 화면이 출력되면 우리는 잔디만 심을 것이기 때문에 q를 입력하고 빠져나온다.
4. 다음 파일 처리를 위해 계속 진행
git rebase --continue
git commit --amend --author="이름 <본인 이메일>"
- 남아있는 누락된 commit들을 처리하기 위해 위의 명령어들을 통해 계속하여 진행해 준다.
- 그럼 다시 에디터 화면이 출력되고 q를 입력하고 빠져나온다.
- 남아있는 누락된 commit들을 모두 처리할 때까지 위(4)의 과정을 반복해 준다.
5. 원격 저장소로 push
git push origin +브랜치명
- '+'를 꼭 명령어로 기입해 준다.
- 이로써 누락된 commit들을 잔디밭에 심을 수 있게 되었다
4. 이미 commit을 진행하여서 남아있는 commit이 없는 경우
git rebase -i -r --root
- 최초 commit을 rebase 하려면 해시코드 대신 --root를 작성해 주면 된다.
- 위의 2번과 같이 pick -> edit 으로 바꿔주는 과정을 거친다.
- 위의 5번의 과정을 거쳐 push를 진행해 주면 된다.
🤔 느낀 점
Git은 알다가도 모르겠다. 분명 우리를 편리하게 해주는 도구임에는 확실한데 이 기능들을 잘 사용하려면 많이 찾아보고, 많이 겪어보고, 많이 공부해야 한다. 이번 과정은 나를 살짝(?)은 힘들고 머리 아프게 했지만 열심히 찾아보며 하나하나 해결해 나가는 과정에서 안도감과 뿌듯함을 느꼈다. 이러한 소중한 나의 과정을 이번 포스팅에 꽤나 정성스럽게 기록해 보았다.
'Git & GitHub' 카테고리의 다른 글
[Git & GitHub] Commit message 변경하기 (0) | 2024.04.19 |
---|