>  기사  >  git pull이 로컬에서 수정된 코드를 덮어쓰나요?

git pull이 로컬에서 수정된 코드를 덮어쓰나요?

zbt
zbt원래의
2023-06-20 17:13:449393검색

git pull은 로컬에서 수정된 코드를 덮어쓰지만, 로컬 코드와 원격 코드 사이에 충돌이 있는 경우에만 가능합니다. 로컬 수정 사항을 덮어쓰는 것을 방지하기 위해 로컬 수정 사항을 제출하거나, 로컬 수정 사항을 숨기거나, 자동 병합을 비활성화할 수 있습니다.

git pull이 로컬에서 수정된 코드를 덮어쓰나요?

1. git pull의 역할

git pull이 로컬 수정 사항을 덮어쓸지 여부를 심도 있게 논의하기 전에 먼저 git pull의 역할을 이해해야 합니다.

Git pull은 git fetch와 git merge 두 명령의 조합으로, 원격 창고에서 최신 코드를 가져온 다음 로컬 코드와 병합합니다.

2. git pull의 동작

git pull의 실제 동작은 현재 git 구성 및 코드 충돌에 따라 다릅니다.

1. 기본값

기본적으로 로컬 코드와 원격 코드 사이에 충돌이 없으면 git pull은 코드 병합을 성공적으로 수행하고 로컬 수정 사항을 덮어쓰지 않습니다.

git pull

2. 원격 코드 충돌

원격 창고의 코드가 로컬 코드와 충돌하면 git pull이 자동으로 차이점을 병합하려고 시도하지만 성공할 것이라는 보장은 없습니다.

자동 병합이 실패하면 git pull은 변경 사항을 커밋하기 전에 충돌을 수동으로 해결하라는 메시지를 표시합니다.

git pull
Auto-merging file1.txt
CONFLICT (content): Merge conflict in file1.txt
Automatic merge failed; fix conflicts and then commit the result.

3. 로컬 코드 충돌

코드를 로컬에서 수정했지만 제출하지 않으면 git pull이 로컬 수정 사항을 덮어씁니다.

이 경우 git pull은 로컬 충돌이 있음을 알리는 메시지를 표시하므로 먼저 로컬 수정 사항을 제출하거나 로컬 수정 사항을 숨긴 다음 코드 병합을 수행할 수 있습니다.

git pull
error: Your local changes to file1.txt would be overwritten by merge. 
Aborting.
Please commit your changes or stash them before you merge.

3. 로컬 수정 사항 덮어쓰기 방지

로컬 수정 사항 덮어쓰기를 방지하려면 다음 방법을 사용할 수 있습니다.

1. 로컬 수정 사항 제출

권장 방법은 로컬 수정 사항을 제출한 다음 코드를 병합하는 것입니다. .

git add .
git commit -m "my local changes"
git pull

2. 로컬 수정 사항을 Stash

로컬 수정 사항을 제출하지 않으려면 git stash 명령을 사용하여 로컬 수정 사항을 캐시할 수 있습니다.

git stash save "my local changes"
git pull
git stash pop

3. 자동 병합은 금지됩니다

경우에 따라 자동 병합으로 인해 예상치 못한 결과가 발생할 수 있습니다. git pull 명령을 실행할 때 자동 병합을 강제로 비활성화할 수 있습니다.

git pull --no-merge

4. 요약

git pull은 로컬에서 수정된 코드를 덮어쓰지만, 로컬 코드와 원격 코드 사이에 충돌이 있는 경우에만 가능합니다.

로컬 수정 사항을 덮어쓰는 것을 방지하기 위해 로컬 수정 사항을 제출하거나 로컬 수정 사항을 숨기거나 자동 병합을 비활성화할 수 있습니다.

위 내용은 git pull이 로컬에서 수정된 코드를 덮어쓰나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.