programing

원격 변경사항을 삭제하고 파일을 "해결됨"으로 표시하려면 어떻게 해야 합니까?

muds 2023. 7. 5. 21:02
반응형

원격 변경사항을 삭제하고 파일을 "해결됨"으로 표시하려면 어떻게 해야 합니까?

로컬 파일이 몇 개 있어요. 원격 지사에서 꺼냈는데 충돌이 있어요.로컬 변경사항은 유지하고 충돌을 일으키는 원격 변경사항은 무시합니다.실제로 "모든 충돌을 해결된 것으로 표시하고 로컬 사용"하는 데 사용할 수 있는 명령이 있습니까?

git checkout 을 가지고 있습니다.--ours로컬에 있는 파일의 버전을 체크아웃하는 옵션(와 반대)--theirs입력한 버전입니다.).합격할 수 있습니다.git checkout나무에 있는 모든 것을 확인하라고 말하는 것.그런 다음 충돌을 해결된 것으로 표시하고 작업을 완료한 후 작업을 커밋해야 합니다.

git checkout --ours .  # checkout our local version of all files
git add -u             # mark all conflicted files as merged
git commit             # commit the merge

에 하십시오..에 시대에git checkout놓치기 .그것은 매우 중요하고 놓치기 쉽습니다. git checkout에는 분기를 전환하는 모드와 인덱스에서 작업 복사본으로 파일을 체크아웃하는 모드의 두 가지 모드가 있습니다(때로는 다른 버전에서 먼저 인덱스로 끌어오기도 함).파일 이름을 전달했는지 여부에 따라 구분됩니다. 파일 이름을 전달하지 않은 경우 분기를 전환하려고 시도하지만, 분기를 전달하지 않은 경우 현재 분기를 다시 체크아웃하려고 시도합니다. 그러나 영향을 미치는 수정된 파일이 있는 경우에는 이를 거부합니다.따라서 기존 파일을 덮어쓰는 동작을 수행하려면 다음을 수행해야 합니다..또는 두 번째 동작을 가져오기 위한 파일 이름.git checkout.

파일 이름을 전달할 때 다음과 같이 오프셋하는 것도 좋은 습관입니다.--를 들어, 를들어예와 같은git checkout --ours -- <filename>태그의 체크아웃하는 체크아웃하는 에 Git의 첫 합니다. 따라서 첫 번째 형식을 사용합니다.checkout지휘권

Git에서 충돌과 병합이 어떻게 작동하는지에 대해 조금 더 자세히 설명하겠습니다.다른 사용자의 코드에서 병합하는 경우(풀 중에도 발생하며 풀은 기본적으로 가져오기 후 병합) 가능한 상황은 거의 없습니다.

가장 간단한 것은 당신이 같은 개정판에 있다는 것입니다.이 경우 "이미 최신 상태"이며 아무 일도 일어나지 않습니다.

인데, 이으로 당신의 " merge 될 입니다. 이 당신은 당신의 "fast-forward merge"를 갖게 될 것입니다.HEAD커밋으로 됩니다. 를할 수 있습니다. 병합을 기록하려면 를 사용하여 이를 비활성화할 수 있습니다.--no-ff).

그런 다음 실제로 두 개의 수정본을 병합해야 하는 상황이 발생합니다.이 경우 두 가지 결과가 가능합니다.하나는 병합이 깨끗하게 수행된다는 것입니다. 모든 변경 사항이 서로 다른 파일에 있거나 동일한 파일에 있지만 두 변경 사항 세트를 모두 문제 없이 적용할 수 있습니다.커밋되지만, 를 사용하지 할 수 .--no-commit를 들어 함수 )foobar그리고 다른 누군가가 새로운 코드를 추가합니다.foo다시 병합하지만 트리가 손상되므로 병합 커밋의 일부로 해당 트리를 정리하여 손상된 커밋을 방지할 수 있습니다.

마지막 가능성은 실제 합병이 있고, 갈등이 있을 수 있습니다.가 있는 파일을 합니다.<<<<<<<,=======,그리고.>>>>>>> 복사본에 작업 복사본에 있습니다.영역도 함)에서는 "staging area"입니다.git add 파일을 전에) 각 합니다. 의 상위 . 병합할 두 분기의 상위에서 파일의 원본 버전이 있습니다.HEAD 측) 및분기의 . (으)로 표시됩니다.

충돌을 해결하려면 작업 복사본에 있는 파일을 편집하여 충돌 마커를 제거하고 코드가 작동하도록 수정할 수 있습니다.병합의 한쪽 또는 할 수 .git checkout --ours또는git checkout --theirs에는 파일 가 되었음을 나타냅니다.git add그런 다음 병합을 커밋할 수 있습니다.git commit.

하세요: 이 돌원을확다의 라면. 충돌의 결과인 경우git merge브라이언 캠벨의 대답을 보세요.

이 만만약그결과면라것의 라면.git rebase원격 변경사항을 삭제하고 로컬 변경사항을 사용하려면 다음 작업을 수행해야 합니다.

git checkout --theirs -- .

"왜"와 theirs"""ours의 의미가 뒤바뀌었는가"를 참조하십시오.ours그리고.theirs기본 재배치 중에 스왑됩니다(업스트림 분기가 체크아웃되었기 때문).

언급URL : https://stackoverflow.com/questions/2073841/how-can-i-discard-remote-changes-and-mark-a-file-as-resolved

반응형