codestates / codestates/brewhere

[조진형] 220512 에러 핸들링 로그

Open
#27 0 comments 0 reactions 0 assignees View on GitHub
complete
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.