[git] 로컬 창고와 원격 창고 간의 불일치 문제 해결

목차

방법 1: (확인되지 ​​않음)

방법 2: (확인됨)

방법 3: 기존

1. 새로운 로컬 브랜치 임시로 원격 창고 코드를 로컬로 끌어옵니다.

2. 이 임시 분기를 기본 분기와 비교하여 차이점과 충돌이 무엇인지 확인합니다.

3. 새 임시 분기를 로컬 마스터 분기와 병합

4. 로컬 마스터 브랜치를 원격 웨어하우스에 다시 제출

5. 분기 삭제

방법 4. 커밋이 없을 때

 1. 모든 변경 사항을 현재 브랜치에 저장

2. 기존 보관함 보기

3. 지정된 stash를 작업 공간에 적용하되, stash를 삭제하지 마십시오.

4. 확장:

4.1 마지막으로 저장된 내용을 해제하고 저장된 내용을 스택에서 팝(즉, 스택의 맨 위를 팝하고 마지막으로 저장된 내용을 해제하고 저장된 내용을 삭제)

4.2 지정된 파일 수정 사항 저장

4.3 푸시 스택에 의해 수정된 파일 확인

4.4 지정된 저장소의 수정된 내용 보기

4.5 모든 캐시 보관함 삭제


코드를 원격 웨어하우스로 가져오는 것을 잊어버리고 pull을 사용하여 오류를 보고하세요.error: Your local changes to the following files would be overwritten by merge:

방금 작성한 코드를 덮어쓰지 않으려면 다음과 같이 해결할 수 있습니다.

방법 1: (확인되지 ​​않음)

방금 로컬에서 수정한 코드를 유지하고 git 서버의 코드를 로컬로 가져오려는 경우(로컬에서 방금 수정한 코드는 임시로 보관됨)

git stash
git pull origin master
git stash pop

이렇게 하면 서버의 코드가 로컬에서 업데이트되고 로컬에서 수정한 코드를 덮어쓰지 않고 이후 , 명령을 사용하여 서버  에서 로컬 코드를 업데이트합니다 add.commitpush

방법 2: (확인됨)

로컬 코드를 완전히 덮고 서버 측 코드만 유지하려면 이전 버전으로 직접 돌아가서 다음을 진행하십시오 pull.

git reset --hard
git pull origin master

참고: 여기서 origin master는 git의 기본 분기를 나타냅니다.

방법 3: 기존

1. 새로운 로컬 브랜치 임시로 원격 창고 코드를 로컬로 끌어옵니다.

git fetch origin master:temp 

 확장하다:

  매개변수가 없는 git 분기: 로컬에 이미 존재하는 분기를 나열하고 현재 분기 앞에 "*" 표시를 추가합니다.

  git branch -r은 원격 분기를 나열합니다. 예를 들면 다음과 같습니다.

  git branch -a는 로컬 및 원격 분기를 나열합니다. 예를 들면 다음과 같습니다.

  

  git branch -m | -M oldbranch newbranch 분기의 이름을 변경합니다. 새 분기 이름 분기가 이미 존재하는 경우 -M을 사용하여 강제로 이름을 변경하고, 그렇지 않으면 -m을 사용하여 이름을 변경해야 합니다.

2. 이 임시 분기를 기본 분기와 비교하여 차이점과 충돌이 무엇인지 확인합니다.

git diff temp

3. 새 임시 분기를 로컬 마스터 분기와 병합

git merge temp

자동으로 병합할 수 없는 충돌 파일이 있는 경우 해당 파일을 직접 열고 수정해야 합니다. 충돌 파일의 기본 형식은 <<<<<<< ~ =======는 현재 분기가 병합되기 전 파일의 내용이고 ======= ~ >>>>>입니다. >> is in other branches 수정된 내용의 경우 이 두 가지 버전 중 하나를 선택한 다음 마크 기호를 함께 삭제해야 합니다.

충돌을 수동으로 해결한 후 원격 브랜치로 푸시할 수 있습니다.
 

4. 로컬 마스터 브랜치를 원격 웨어하우스에 다시 제출

git push -u origin master

5. 분기 삭제

git branch --delete temp
# 命令删除本地分支

# 这个好像也可以
git branch -D temp  //删除本地temp分支

확대:

"git push origin --delete branch" 명령을 사용하여 원격 분기를 삭제하십시오.

추적 분기를 삭제하려면 "git branch --delete --remotes" 명령을 사용하십시오.

방법 4. 커밋이 없을 때

일반적으로 이러한 시나리오를 접하게 됩니다. 기능을 구현하고 있지만 아직 완료하지 않았습니다. 이때 버그를 수정해야 합니다. 쓸모없는 로그 레코드를 너무 많이 추가하기 위해 지금 수정 사항을 제출하고 싶지는 않지만 제출하지 않으면 되돌릴 수 없습니다. 이 상태로. 이때 git sta sh 명령을 사용하여 로컬 작업 공간의 내용을 저장하고 이전 커밋 후 상태로 돌아갈 수 있습니다.

 다음은 작은 정리입니다. 먼저 아래의 1-2-3-4 부분을 본 다음 이 명령을 살펴보십시오.

# 保存当前未commit的代码
git stash

# 保存当前未commit的代码并添加备注
git stash save "备注的内容"

# 列出stash的所有记录
git stash list

# 删除stash的所有记录
git stash clear

# 应用最近一次的stash
git stash apply

# 应用最近一次的stash,随后删除该记录
git stash pop

# 删除最近的一次stash
git stash drop

 1. 모든 변경 사항을 현재 브랜치에 저장

git stash save -m "标识注释"

2. 기존 보관함 보기

git stash list

3. 지정된 stash를 작업 공간에 적용하되, stash를 삭제하지 마십시오.

git stash apply 对应stash的名字  # 上面的标识

# 或者
 git stash apply stash@{0}


删除则是将apply换成drop

확장하다:

기본적으로 git stash는 다음 파일을 캐시합니다.

        스테이징 영역에 추가된 수정 사항
        Git에서 추적하지만 스테이징 영역에 추가되지 않은 수정 사항

그러나 다음 파일은 캐시되지 않습니다.

        작업 디렉토리의 새 파일
        에 대해 무시되는 파일

4. 확장:

4.1 마지막으로 저장된 내용을 해제하고 저장된 내용을 스택에서 팝(즉, 스택의 맨 위를 팝하고 마지막으로 저장된 내용을 해제하고 저장된 내용을 삭제)

git stash pop

4.2 지정된 파일 수정 사항 저장

git stash push .../.../ .../.../ .../.../

     /.../...는 저장하려는 수정된 파일 경로로, 많은 파일을 수정했지만 수정된 일부 파일만 저장하고 싶을 때 git stash push 뒤에 경로를 추가하면 됩니다. , 이 파일 경로 사이에 공백을 추가하십시오.

4.3 푸시 스택에 의해 수정된 파일 확인

저장소에 수정 사항이 너무 많으면 특정 저장소에서 어떤 파일이 수정되었는지 잊어버릴 수 있습니다. 특정 저장소에서 어떤 파일이 수정되었는지 확인하려면 git stash show stash@{0}를 사용할 수 있습니다. 명령어 stash@{0}는 가장 최근에 저장된 수정이고, 다른 저장소를 보고 싶다면 stash@{5}와 같이 stash@{0}의 개수만 변경하면 됩니다. 위 그림과 같이 , 먼저 git stash list 를 사용하여 저장소 목록을 본 다음 git stash show stash@{0} 명령을 사용합니다. 첫 번째 수정을 보면 가장 최근 수정 저장소에서 test.txt 파일 하나만 수정한 것을 확인할 수 있습니다. .

git stash show stash@{0} 

4.4 지정된 저장소의 수정된 내용 보기

예를 들어 최신 숨김 수정의 모든 파일과 내용을 보기 위해 수정된 파일을 보는 대신 숨김 수정의 모든 내용을 보려면 git stash show -p stash@를 사용할 수 있습니다. 보기 위한 {0} 명령.

git stash show -p stash@{0}

4.5 모든 캐시 보관함 삭제

git stash clear

추천

출처blog.csdn.net/legend818/article/details/130065179