codestates / codestates/brewhere
[조진형] 220512 에러 핸들링 로그
- Dominant language
- JavaScript
- Stars
- 4
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
> 해결된 에러라면 라벨에 'Complete' 를 달아주세요.
> 미해결된 에러라면 라벨을 'In progress' 로 변경해주세요.
### 어떤 에러인가요?
- git push origin feature1 진행시 push가 진행되지 않는 에러
### 에러 메시지
```bash
$ ! [rejected] feature1 -> feature1 (fetch first)
error: failed to push some refs to 'https://github.com/YeonSeoJo/brewhere.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
```
### 에러 핸들링 방법
-
### 첫번째 방법
git pull 시에 –allow-unrelated-histories 옵션 추가하여 관련 없었던 두 저장소를 병합하도록 허용
git pull origin master --allow-unrelated-histories
git에서는 서로 관련 기록이 없는 이질적인 두 프로젝트를 병합할 때 기본적으로 거부하는데, 이것을 허용해 주는 것이다.
하지만 단방향(Pull Request)이기 때문에 나는 브랜치에 pull할 권한이 없기 때문에 실패했다.
### 두번째 방법
Git Repository에서 과거 Commit내역 삭제하기
어차피 과거 커밋했던 것들을 다 날려버려도 상관 없다면, 내 레파지토리에 들어가서 원인이있는 브랜치로 올렸던 과거 커밋 내역을 삭제하는 것이 가장 맘편한 방법일 것이다.
git reset HEAD^ 를 통해
최근 마지막 커밋 내역 한 개를 삭제할 수 있다. HEAD 끝에 "~n"를 붙이면 최근 n개의 커밋 내역을 삭제한다.
하지만 이방법도 정확한 이유는 모르겠지만 잘되지는 않았다.
### 세번째 방법
Git push origin feature/OOO -- force
Push origin 뒤에 -- force 를 붙여주면, 과거 커밋 내역과 상관없이 지금 현재 커밋내용으로 덮어씌워 버리는 명령어이다.
두번째 방법과 병행해서 문제가 있는 커밋내역을 삭제(git reset HEAD^)하고
Git push origin feature/OOO -- force을 넣어줘서 정상적으로 push가 되었다.
### 에러 핸들링을 위해 참고한 레퍼런스 링크
[링크]https://velog.io/@rain98/%EA%B9%83%ED%97%88%EB%B8%8C-non-fast-forward-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.