에러명

error: Pulling is not possible because you have unmerged files.

fatal: Exiting because of an unresolved conflict.

 

 

발생 과정

: 깃헙 충돌 과정 테스트 실습 중에 에러가 발생했습니다.

 

1. 로컬1, 로컬2 에 원격저장소를 클론

2. 로컬1에서 파일 수정 후 푸쉬

3. 로컬2에서 파일 수정 후 푸쉬   -->   에러 발생

 

 

해결 과정

- 발생이유

: 해당 에러가 발생한 이유는 로컬2 에 원격저장소와 같은 파일이 있는데, 로컬2 에서 아직 머지가 잘 되지 않았다는 것

- git commit -am "message" 후 다시 pull 을 하면

이렇게 자동으로 머지가 되며

이렇게 텍스트 파일 내부에 수정된 텍스트가 적용됨을 알 수있습니다.

원격 저장소에도 똑같이 푸쉬됨을 알 수 있습니다.

* 용어 설명

1) Contributor

프로젝트 핵심 개발 팀이 아닌 외부에서 온 사람으로서 일부 변경을 통해 프로젝트에 기여하고자 하는 사람입니다.

즉, 프로젝트 관리자는 아니지만 프로젝트의 커밋에 관여하는 모든 사람을 의미

 

 - 특징

   > Push 권한이 없어 Fork하여 프로젝트를 통째로 복사한 후 자신의 복사된 프로젝트에 Push 를 합니다. 

      그 후 원래의 저장소로 Push 내용을 보내는 Pull Request 를 생성합니다.

   > 프로젝트 관리자는 Pull Request 를 검토하고 Merge 또는 Reject 를 한다.

   > 이때, Pull Request 가 받아들여 지면, 이 사람을 Contributor 라고 부른다.

  

 

2) Collaborator

프로젝트의 공동 책임자를 의미합니다.

즉, Push/Pull 권한 모두를 가지고 있는 사람입니다.

 

만약 하나의 프로젝트를 중점적으로 개발하는 개발자들은 Collaborator로 등록해 작업하는 것이 효율적입니다.

 

Pull Request 를 왜 하는가?

모든 사용자를 Contributor 로 등록할 수 없기 때문입니다.

 

 - 사용되는 경우

1) 오픈 소스 프로젝트를 고친 경우

2) Collaborate Project 에서 Mege 권한 관리를 하고 싶을 때

 ex) master/release 브랜치로 merge는 무조건 pull request 하고, 팀장이 merge 를 수행

 

 

 

어떻게 사용하는가?

1) 최종 기여할 Repository 를 Fork

2) 내 Repository 로 Fork 된 프로젝트를 내 로컬로 Clone 후 수정

3) 커밋 후 푸쉬하면 기여할 Repository 에서 Merge / Reject 를 결정

 

 

 

- 발생한 문제

: 로컬에 있는 메모장을 실수로 업로드 해버렸습니다..

1) 깃헙에서 메모장을 삭제,  로컬에서 메모장을 삭제

2) 두가지 행동을 취한 후 프로젝트 작업 진행

3) 수정된 프로젝트를 다시  깃헙에 업로드 후 아래 오류 발생

저번에 봤던 오류와 같은 오류입니다.

간단히 pull 하고 다시 push 하면 될 것으로 예상이 되는데...

 

 

[ 제가 가진 의문점 ] 

 : pull 하면 제가 수정한 파일이 깃헙에 업로드된 파일로 덮어쓰기 되버리는게 아닌가 ?? 라는 점입니다.

 

 

그래서 복사본을 따로 어디에 넣어두고 pull 하고 push 해보니 덮어쓰기 이런거 없이 잘 해결 되었습니다.

 

* 결론 : pull 은 내가 수정한 파일들을 해치지 않는다 !!

 

 

 

 

그리고 위의 오류에 대한 해결 사항은 아래 글을 보시면 해결할 수 있습니다.

https://tjdwns4537.tistory.com/34

 

깃헙 Everything up-to-date , error: failed to push some refs to 오류

발생 오류: - 현상태 : Repository 에 수정된 부분을 업로드하려는 상황 1. 커밋 후 푸쉬 2. Everything up-to-date 라고 뜨고 아무것도 업데이트되지 않음. 방법1. git clean -f : untracked file 에 .git ignore..

tjdwns4537.tistory.com

 

문제 : 클릭안되는 화살표 폴더가 push됨

 

이유:

해당 폴더안에서도 push 를 하다보니 .git 파일이 해당 폴더 내부에도 존재해서 발생하는것 때문이였습니다.

 

1) 해당 폴더 내부로 디렉터리를 옮긴 다음, rm -rf .git

2) git rm --cached . -rf 로 스테이지 파일을 제거

3) add ~ commit ~ push 를 다시 해준다.

4) 해결 완료

 

 

 

 

 

 

 

 

 

* 참조한 블로그

https://zzang9ha.tistory.com/346

 

GitHub(깃허브) - 디렉토리에 화살표 표시(폴더 클릭이 안될 때)

📎 GitHub 디렉토리 화살표 표시 -> 폴더 접근 불가능 깃허브에서 한 디렉토리에 다른 디렉토리를 추가하는 도중 위와 같이 디렉토리에 화살표 표시가 생기고, 디렉토리에 접근이 되지않는 문제

zzang9ha.tistory.com

 

발생 오류:

- 현상태 : Repository 에 수정된 부분을 업로드하려는 상황

1. 커밋 후 푸쉬

2. Everything up-to-date 라고 뜨고 아무것도 업데이트되지 않음.

 

 

방법1. git clean -f

 

: untracked file 에 .git ignore 과 같은 파일이 있어 이 부분 때문에 오류가 발생하는가 해서 clean 후 재시도했지만 해결 안됨

 

 

 

 

 

방법2. 프로젝트 파일 전체를 묶어서 하나의 폴더에 넣고 해당 폴더를 커밋 후 푸쉬

 

: untracked file 이 갑자기 엄청 많아지는 이 부분에 대해 알고 넘어가야할것 같다.

 

https://tjdwns4537.tistory.com/33

 

GIT 디렉토리, Track/Untrack 상태 알아보기

ㅇ GIT 의 디렉토리 : GIT 프로젝트 디렉터리에는 .git 을 포함하여 많은 파일이 존재한 것입니다. GIT 디렉터리는 GIT 프로젝트에서 작업한 수많은 정보와 버전들에 대한 데이터를 저장하는 데이터

tjdwns4537.tistory.com

 

즉, Untrack 에 나와있던 파일들을 봤을 때 .git 이 있는 디렉터리에서 git 명령어를 사용하는게 아니라

다른 경로에서 사용해서 발생한 어이없는 실수입니다....

 

다시 원했던 경로로 가서 git init 부터 천천히 해보겠습니다.

 

 

 

 

방법 3. 소스코드/리소스 파일들을 하나의 폴더에 모아서 git init 부터 다시해준다.

 

 > 아래와 같은 오류가 발생

error: failed to push some refs to ~~

 

- 발생 이유 : 

github 내에 local에 없는 파일이 있고, 내 파일을 push 하면 발생하는 오류입니다.

즉, github에 README.txt 파일을 업로드 해놓고 새로운 폴더하나만 떵그러니 업데이트하려고하니 발생하는 오류입니다.

 

 

 

 

 

 

[ 해결 방법 ]

 

 - git pull origin master --allow-unrelated-histories

: 저장소와 로컬 저장소의 병합을 허용한다는 의미입니다.

아마 제가 윈도우로 레퍼지스토리를 만들고, 맥북으로 pull 을 받으려고 해서 발생하는 문제인것 같은데

 

 

 - fatal: refusing to merge unrelated histories  

위와 같은 오류가 발생하였습니다.

 

그래서 병합해주는 명령어를 통해서 pull 을 하니 강제로 push 해주는 방법이 아닌 방식으로 해결 가능하였습니다...

 

다시 push 해주니 정상 작동완료 ㅠㅠ

 

참조했던 블로그입니다 !!

 

https://iambeginnerdeveloper.tistory.com/entry/github-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0-error-failed-to-push-some-refs-to-warning-LF-will-be-replaced-by-CRLF-in-%EA%B0%95%EC%A0%9C-push-%ED%95%98%EC%A7%80%EB%A7%88%EC%84%B8%EC%9A%94%EC%A0%9C%EB%B0%9C

 

github 에러 해결하기 | error: failed to push some refs to / warning: LF will be replaced by CRLF in (+추가 해결법

깃허브(GitHub) 오류, 경고 해결하기 - error : failed to push some refs to ~ / push rejected - warning: LF will be replaced by CRLF in ~ 앞으로 마주하는 오류들을 해결할 때 마다 글을 써두는 것이 후에..

iambeginnerdeveloper.tistory.com

 

ㅇ GIT 의 디렉토리

 

: GIT 프로젝트 디렉터리에는 .git 을 포함하여 많은 파일이 존재한 것입니다.

GIT 디렉터리는 GIT 프로젝트에서 작업한 수많은 정보와 버전들에 대한 데이터를 저장하는 데이터베이스로,

그 외 데이터들은 깃 디렉터리에서 특정 버전의 데이터들을 checkout한 것입니다.

 

이때, checkout하여 가져온 버젼의 파일들로 프로젝트 작업을 수행하며, 이 checkout 파일들이 존재하는 곳을

워킹트리 또는 워킹 디렉터리라고 부릅니다.

 

 

ㅇ GIT 의 세가지 영역

1) 워킹 디렉터리 : 프로젝트를 진행하는 실제 작업공간으로 개발 소스/자원들이 존재하며 이 파일을 수정,추가합니다.

2) Staging Area : 워킹 디렉터리에서 작업한 내역을 Git디렉터리로 커밋하기 위해 커밋 대상 목록으로 담아두는 장바구니 목록 영역

-> git add 명령어가 된 상태

3) Git 디렉터리 : 실제 .git 이라는 이름의 디렉터리이며, 여러 버전의 커밋 데이터와 Git 프로젝트 정보를 담고있는 핵심 디렉터리

-> git commit 된 상태

 

 

ㅇ Git 프로젝트 파일 상태

: 각각의 파일들이 어떤 상태인지 분류하여 관리합니다.

 

1) Untracked / Tracked 상태

: 워킹 디렉터리에 있는 여러 파일들을 Git 추적 관리 여부에 따라 각각 크게 두 가지 상태로 나눌 수 있습니다.

- Tracked : Git 이 해당 파일을 추적/관리하는 상태

            => 최소 한번 git add 되거나, Commit 된 상태

- Untracked : 아직 Git 이 해당 파일을 추적 및 관리하지 않는 상태로 디렉터리에 존재하는 파일이더라도

                      Git이 관리하는 파일은 아니라는 의미입니다.

           => 즉, 파일이 수정,삭제되어도 Git에서 신경 안쓰며 복구가 불가능합니다. 대신 불필요한 파일들을 커밋하게 되는 경우를 방지 가능

 

2) Unmodified / Modified 상태 ( Tracked 상태에만 가능 )

 : 파일의 변경 여부에 따른 상태로 나눈 경우입니다. 변경 발생 기준은 파일이 Stage 또는 Commit 된 시점 이후로 변경되었는지 입니다.

 

 

3) Stage 상태

: Untracked 파일 / Modified 상태인 파일을 Staging Area 에 내역을 등록하지 않은 상태입니다.

 

 

 

 

* 참조한 블로그입니다.

https://dololak.tistory.com/304

 

[Git] Git 상태 확인하기 - git status 명령어 및 상태 파헤치기!

먼저 봐야할 글 [Git] Git 세 가지 영역 및 상태 Committed, Modified, Staged 설명 Git에서 세 가지 영역 Git 프로젝트 디렉터리에는 .git(이하 Git 디렉터리) 를 포함하여 프로젝트를 구성하는 수많은 파일들

dololak.tistory.com

 

+ Recent posts