일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 트러블슈팅
- solidity
- 스테이트머신패턴
- 업그레이더블 컨트랙트
- 디자인 패턴
- 팀 프로젝트
- 솔리디티
- 블록체인
- 프록시패턴
- RBAC
- 팩토리패턴
- 배팅
- 옵저버패턴
- 재진입
- 부트캠프
- github
- 일시정지
- 토큰노믹스
- 인센티브 기반 커뮤니티
- 코드리뷰
- github 에러
- 웹툰
- git add
- 싱글톤패턴
- git commit
- 코드스테이츠
- 투표
- 멀티시그
- 회로차단
- Today
- Total
보다 더 생생한 기록
Github add, commit 실패 본문
문제 발생
로컬에서 만든 파일들을 github에 올리기위해 git add . 를 진행했고, 목록에 들어갔는지 확인하기위해 git status를 사용했다.
내부 두개의 폴더중 client 폴더가 누락되는 상황이 계속 벌어졌다. 처음에는 폴더의 용량이 280Mb로 크기때문에 github쪽에서 reject 시키는 줄 알고 git-lfs(Git Large File Storage)를 구글링하기 시작했다.
git-lfs란?
Github에 파일을 올릴때 50Mb부터 Warning이 표시되고, 100Mb부터 push시 Error가 발생한다. 그럼에도 불구하고 경우에 따라 repo에 반드시 올려야할 상황이 올때 필요한 툴이다.
설치부터 진행한다.
Ubuntu 리눅스
# curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# sudo apt-get install git-lfs
# git lfs install
설치 후 사용방법은 아래와 같다.
// my_big_image 디렉토리의 파일을 lfs에 적용한다.
# git lfs track "my_big_image/*"
또는
// my_big_image 디렉토리 안의 zip 파일을 lfs에 적용한다.
# git lfs track "my_big_image/*.zip"
//기존 git사용 방식대로 사용하면 됨.
# git add .
# git commit -m "lfs setting"
# git push -u origin master
이럼에도 불구하고 똑같은 에러창이 나왔다. 즉 용량 문제는 아니였나 싶다. (애초에 에러메세지에 용량 초과 관련 내용이 없었으니..)
TroubleShooting
우선 문제가 되는 폴더자체에 의구심이 들어 client 폴더 내의 파일들을 cli 라는 새로 만들어진 폴더에 집어 넣었다.
그 뒤 git add를 진행하고 git status로 살펴보니 문제가 사라졌다. 하지만 git push 단계에서 새로운 문제가 발생했다.
현재 브랜치의 끝이 리모트 브랜치보다 뒤에 있으므로 업데이트가 거부되었습니다.
이번엔 이 문제를 해결해보려 한다. git log --graph 를 사용하면, 지금까지 commit 했던 내역들이 쭉 나온다.
정확하지는 않지만 main 브랜치의 과거 commit들이 문제가 생긴것처럼 보인다.
블로그를 탐색해본 결과 두가지 해결책이 나왔다.
1. 이전 commit을 전부 지운다
2. git push origin main --force 를 사용한다.
--force를 사용하면 과거 commit 내역과 상관없지 지금 현재 commit 내용으로 덮어 씌워버리는 명령어이다. 결국 둘다 과거 commit들을 없애버리는 결과를 낳기 때문에 최대한 지양해야한다. 특히 해당 원격 저장소가 다른 사람들과 공유되는 상황이라면 여러 사람들이 commit이 사라지면서, 동기화가 끊어지는 결과를 초래할수 있다.
이런 경우에만 force push를 권한다고한다.
- 덮어쓰기 (overwrite) 하려는 변경사항을 현재 사용자 외에 다른 사람들이 pull 하지 않은 경우
- force push 를 수행한 이후, 모든 사용자들로 하여금 새로운 사본을 clone 하도록 하고 그들의 변경사항을 새로운 사본 기반으로 재적용 하도록 한다 (다른 사용자들의 극렬한 반발을 야기할 수 있음에 유의하라).
'Trouble Shooting' 카테고리의 다른 글
vscode 에서 한글 입력이 안될 때 / gui 가 한글로 안보일때 (0) | 2022.11.08 |
---|