Git에 "합병되지 않은 파일이 있으므로 꺼내기가 불가능합니다"라고 표시되는 이유는 무엇입니까?
터미널에서 프로젝트 디렉터리를 가져오려고 하면 다음 오류가 표시됩니다.
harsukh@harsukh-desktop:~/Sites/branch1$ git pull origin master
U app/config/app.php
U app/config/database.php
U app/routes.php
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
는 왜 git라고 ?"Pull is not possible because you have unmerged files"
어떻게 해결할 수 있을까요?
현재 발생하는 것은 이전에 병합을 시도했지만 병합 충돌이 발생한 특정 파일 집합이 있다는 것입니다.이상적으로는 충돌이 하면 수동으로 것이 git add file.name && git commit -m "removed merge conflicts"
이제 다른 사용자가 저장소에서 문제의 파일을 업데이트하고 변경 사항을 공통 업스트림 repo로 푸시했습니다.
따라서 마막커서발해병않다충않지발니병합경생는가우지되합지결제되아파대로돌이일이밋에합생한▁it다▁from니▁are발▁hence합▁merge▁and생▁conflicts경▁the않마,지가▁so▁were우▁that▁your▁(▁happensprob▁all▁last▁commit▁so▁files▁not▁not는▁your▁merged.U
(unmerged
파일 플래그입니다.할 때, 이신당래그.git pull
일부 버전의 파일이 올바르게 해결되지 않았기 때문에 git에서 오류를 토하고 있습니다.
문제를 사항을 .git pull
.
문제의 샘플 재생 및 해결:
# Note: commands below in format `CUURENT_WORKING_DIRECTORY $ command params`
Desktop $ cd test
먼저 저장소 구조를 생성합니다.
test $ mkdir repo && cd repo && git init && touch file && git add file && git commit -m "msg"
repo $ cd .. && git clone repo repo_clone && cd repo_clone
repo_clone $ echo "text2" >> file && git add file && git commit -m "msg" && cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
있는데, 이 repo_clone을 , 우리는 그것을 할 것입니다.git pull
것입니다.
repo_clone $ git pull origin master
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/anshulgoyal/Desktop/test/test/repo
* branch master -> FETCH_HEAD
24d5b2e..1a1aa70 master -> origin/master
Auto-merging file
CONFLICT (content): Merge conflict in file
Automatic merge failed; fix conflicts and then commit the result.
복제본의 충돌을 무시하고 원본 보고서에 더 많은 커밋을 수행하면,
repo_clone $ cd ../repo
repo $ echo "text1" >> file && git add file && git commit -m "msg" && cd ../repo_clone
▁a우를 합니다.git pull
는 돈을 받습니다.
repo_clone $ git pull
U file
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
로 고는 다음과 .file
지금은 합병되지 않은 상태이고 만약 우리가 한다면.git status
우리는 분명히 같은 것을 볼 수 있습니다.
repo_clone $ git status
On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
(use "git pull" to merge the remote branch into yours)
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: file
따라서 이 문제를 해결하려면 먼저 이전에 무시했던 병합 충돌을 해결해야 합니다.
repo_clone $ vi file
내용을 다음으로 설정합니다.
text2
text1
text1
추가하고 변경 사항을 커밋합니다.
repo_clone $ git add file && git commit -m "resolved merge conflicts"
[master 39c3ba1] resolved merge conflicts
변경사항을 병합하지 않고 로컬을 업데이트하려면 다음을 실행합니다.
git reset --hard HEAD
이렇게 하면 HEAD로 로컬을 재설정한 다음 git pull을 사용하여 리모컨을 당깁니다.
이미 로컬에서 병합을 커밋했지만 아직 원격으로 푸시하지 않은 경우에도 병합을 되돌리려는 경우:
git reset --hard HEAD~1
작업 디렉토리가 정리되지 않은 상태에서 로컬 분기에 새 커밋을 하나 더 추가하려고 합니다.결과적으로, Git은 당기기를 거부하고 있습니다.시나리오를 더 잘 시각화하려면 다음 다이어그램을 고려하십시오.
AB D>: A <- B <- C <- D>
A주: A <- B*
(*수정되었지만 커밋되지 않은 파일이 여러 개 있는지 확인합니다.)
이 상황을 처리하기 위한 두 가지 옵션이 있습니다.파일의 변경 내용을 삭제하거나 유지할 수 있습니다.
例션 1:
다음 중 하나를 사용할 수 있습니다.git checkout
병합되지 않은 각 파일에 대해 또는 사용할 수 있습니다.git reset --hard HEAD
분기의 모든 파일을 HEAD로 재설정합니다.그런데, 당신의 지역 지점의 HEAD는 별표가 없는 B입니다.옵션을 다음과 같이 됩니다.
원격: A <- B <- C <- D
로컬: A <- B
이제 풀링할 때 마스터에서 변경한 내용으로 분기를 빠르게 전달할 수 있습니다.끌어 당기고 나면 브랜치가 마스터처럼 보일 것입니다.
로컬: A <- B <- C <- D
例옵 2:합니다.
변경 사항을 유지하려면 먼저 각 파일의 병합 충돌을 해결해야 합니다.IDE에서 각 파일을 열고 다음 기호를 찾을 수 있습니다.
<<<<<>>>
은 신의버 드코의입니다.
=======
의
>>>>>>>
Git는 두 가지 버전의 코드를 제공합니다.HEAD 마커에 포함된 코드는 현재 로컬 분기의 버전입니다.다른 버전은 원격에서 제공되는 것입니다.에는 코드버선고마함와다께코른제드를거후다각다입한파있여니수일력습을추영준할을 입력하여 각 할 수 .git add
는 마막단계입력결여커것과다입니밋는하를하지는▁다▁typing것▁your▁the니입▁result커▁commit를 입력하여 결과를 확정하는 것입니다.git commit -m
적절한 메시지와 함께. 시점에서,다음과 같이 : 시점에우다다은같음습다니과램이그이.
원격: A <- B <- C <- D
로컬: A <- B <- C'
여기서 저는 리모콘의 커밋 C와 다르기 때문에 방금 한 커밋을 C'로 표시했습니다.이제 당기려고 하면 빠른 전진이 아닌 오류가 발생합니다.분기와 원격 모두 공통 조상 커밋 B에서 분리되었기 때문에 Git는 분기에서 변경 사항을 원격으로 재생할 수 없습니다.이 시점에서, 당신이 당기고 싶다면 당신은 다른 것을 할 수 있습니다.git merge
또는git rebase
원격에 있는 당신의 지점.
Git에 대한 숙달을 위해서는 단방향 링크 리스트를 이해하고 조작할 수 있어야 합니다.이 설명을 통해 Git 사용에 대해 올바른 방향으로 생각해 볼 수 있기를 바랍니다.
간단한 해결책이 있습니다.하지만 그러기 위해서는 먼저 다음을 배울 필요가 있습니다.
vimdiff
충돌을 제거하려면 다음을 사용합니다.
git mergetool
위 명령은 기본적으로 충돌하는 각 파일에 대해 로컬 파일, 혼합 파일, 원격 파일(총 3개 파일)을 엽니다.로컬 및 원격 파일은 참조용일 뿐이며, 이 파일을 사용하여 혼합 파일에 포함할 파일(또는 포함하지 않을 파일)을 선택할 수 있습니다.파일을 저장하고 종료합니다.
를 로컬로 검토 또는 으로), 원격 때 합니다.$ git pull
로컬 병합 충돌이 발생합니다.
$ git checkout REMOTE-BRANCH
$ git pull (you get local merge conflicts)
$ git reset --hard HEAD (discards local conflicts, and resets to remote branch HEAD)
$ git pull (now get remote branch updates without local conflicts)
만약 당신이 당신의 지역 지점 변경을 원하지 않는다면, 나는 이것이 가장 좋은 접근법이라고 생각합니다.
git clean -df
git reset --hard
git checkout REMOTE_BRANCH_NAME
git pull origin REMOTE_BRANCH_NAME
풀하기 전에 병합해야 하는 일부 파일이 로컬에 있습니다.파일을 체크아웃한 다음 풀을 눌러 로컬 파일을 덮어쓸 수 있습니다.
git checkout app/config/app.php app/config/database.php app/routes.php
git pull origin master
.
의 경우,와 같습니다.
- U(unmerged) 기호로 시작하는 모든 파일을 제거했습니다. as-
U project/app/pages/file1/file.ts
U project/www/assets/file1/file-name.html
- 마스터에서 코드 가져오기
$ git pull origin master
- 상태를 확인했습니다.
$ git status
여기 나타난 메시지가 있습니다.
그리고 각각 2개와 1개의 다른 커밋을 가집니다.
(use "git pull" to merge the remote branch into yours)
병합되지 않은 경로가 있습니다.
(fix conflicts and run "git commit")
병합되지 않은 경로:
하려면 " add 사용합니다.)"를 사용합니다.)
both modified: project/app/pages/file1/file.ts
both modified: project/www/assets/file1/file-name.html
- 모든 새 변경사항 추가 -
$ git add project/app/pages/file1/file.ts
project/www/assets/file1/file-name.html
- 머리에 변경사항 적용
$ git commit -am "resolved conflict of the app."
- 코드를 눌렀습니다.
$ git push origin master
이 이미지로 문제가 해결될 수 있는 방향은 무엇입니까?
따라야 할 단계:
step-1 : git reset --hard HEAD (if you want to reset it to head)
step-2 : git checkout Master
step-3 : git branch -D <branch Name>
(Remote Branch name where you want to get pull)
step-4 : git checkout <branch name>
step-5 : git pull. (now you will not get any
error)
감사합니다, 사바시시
병합 충돌이 발생하면 개별 파일을 열 수 있습니다."<<<< 또는 >>>>>" 기호가 표시됩니다.이러한 변경사항은 원격에 있는 변경사항 및 변경사항을 나타냅니다.필요한 부분을 수동으로 편집할 수 있습니다. 그런 다음 파일을 저장하고 다음 작업을 수행합니다. git add
병합 충돌이 해결됩니다.
다음 명령만 실행합니다.
git reset --hard
언급URL : https://stackoverflow.com/questions/26376832/why-does-git-say-pull-is-not-possible-because-you-have-unmerged-files
'programing' 카테고리의 다른 글
기존 권한을 가진 사용자를 신속하게 삭제하는 방법 (0) | 2023.05.10 |
---|---|
개체가 특정 유형인지 확인하는 방법 (0) | 2023.05.10 |
다음을 클릭한 후 알림 제거 (0) | 2023.05.05 |
Youtube_dl : 오류: YouTube에서 다음과 같이 말했습니다.비디오 데이터를 추출할 수 없습니다. (0) | 2023.05.05 |
엑셀에서 큰따옴표를 포함하는 문자열이나 수식을 만드는 방법은 무엇입니까? (0) | 2023.05.05 |