Git에서 강제로 풀 덮어쓰기

Abdul Jabbar 2023년1월30일
  1. 힘내 강제 풀
  2. Git을 가져올 때 로컬 커밋 유지
  3. Git을 가져올 때 로컬 변경 사항 유지
Git에서 강제로 풀 덮어쓰기

Git은 오늘날 가장 인기 있고 까다로운 버전 제어 시스템입니다. Git의 사용자 인터페이스는 다른 버전 관리 시스템과 유사합니다. 로그인하고 저장소를 복제하고 커밋할 수 있습니다.

그러나 Git은 다른 시스템보다 더 복잡하게 만드는 몇 가지 주목할만한 차이점이 있습니다.

Git이 배포됩니다. 모든 저장소가 단일 중앙 위치에 저장되는 대신 모든 사용자에게 저장소가 있습니다. 모든 사람이 이를 사용하려면 다른 저장소에 연결해야 합니다. 약간 성가신 일이지만 다른 위치에서 동일한 파일로 작업할 수 있다는 의미이기도 합니다. 여러 장소에서 동일한 프로젝트를 작업할 수 있으며 변경 사항이 동기화됩니다.

우리는 현재 작동 중인 로컬 브랜치에서 모든 변경 사항을 강제로 가져오는 방법을 이해하기 위해 여기에 있습니다. 실제로 최신 변경 사항이 있는 원격 저장소와 동기화되지 않은 오래된 git 저장소가 있고 원격 최신 커밋이 있거나 없을 수도 있습니다. 이제 모든 최신 커밋을 가져오고 싶습니다. 원격 변경 사항이 있고 현재 저장소의 로컬 변경 사항에 대해서도 신경 쓰지 않으므로 이 시나리오에서 무엇을 해야 할까요? 이 문제에 대한 해결책은 아래와 같습니다.

힘내 강제 풀

pull이라는 이름으로 여기에서 git pull 명령을 사용할 수 있다고 생각할 수 있지만 Git에서 pull 명령을 사용하는 이상적인 방법은 아닙니다. 따라서 이 상황을 처리하는 두 가지 방법이 있습니다. 하나는 현재 로컬 저장소를 삭제하고 동일한 저장소의 복제본을 다시 만드는 것이지만 단점은 현재 저장소에 이미 존재하는 추적되지 않은 파일이 손실된다는 것입니다.

먼저 다음과 같이 fetch --all을 실행합니다.

git fetch --all

여기에서 git fetch ​​명령은 병합이나 리베이스 없이 원격에서 최신 버전을 다운로드합니다. 그런 다음 위와 같이 fetch를 실행한 후 master 분기에 있는 경우 다음 명령을 실행하여 재설정합니다.

git reset --hard origin/master

위의 명령 git reset을 실행하면 마스터 분기가 방금 가져온 것으로 재설정됩니다. 다른 분기에 있는 경우 다음과 같이 분기 이름을 사용합니다.

git reset --hard origin/<branch_name>

위의 --hard 옵션은 작업 트리의 모든 파일을 origin/master 분기의 파일과 일치하도록 변경합니다.

Git을 가져올 때 로컬 커밋 유지

로컬 커밋을 유지하려면 reset 명령을 실행하기 전에 현재 있는 분기에서 로컬 분기를 만들어야 합니다.

git checkout master
git branch new-backup-branch
git fetch --all
git reset --hard origin/master

위에서 언급한 명령은 정확히 무엇을 하는지 알고 있는 전문 사용자를 위한 것입니다. 경고는 위의 명령에 대한 것입니다. 위의 명령만 주의해서 사용하고 적용하기 전에 해당 작업이 의미하는 바를 알고 있는지 확인하십시오!

Git을 가져올 때 로컬 변경 사항 유지

reset 명령을 실행하면 커밋되지 않은 변경 사항과 단계적 변경 사항이 모두 손실됩니다. 그렇다면 로컬 리포지토리에서 해당 변경 사항을 유지하는 솔루션은 무엇입니까?

이러한 변경 사항을 유지하려면 재설정 명령을 실행하기 전에 stash 명령을 사용하고 pull을 수행한 후에는 변경 사항 위에 숨긴 변경 사항을 pop할 수 있습니다. 이를 위해 다음 명령을 실행합니다.

git stash

재설정 및 가져오기를 마친 후 이러한 숨김 변경 사항을 다시 적용하려면 이러한 방식으로 작업 디렉터리에서 로컬 변경 사항을 다시 가져옵니다. 다음 명령을 사용하여 변경 사항을 되돌릴 것입니다.

git stash pop
작가: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

관련 문장 - Git Pull