로컬 Git 저장소를 원격 Git 저장소와 동기화
로컬 저장소를 원격 저장소와 동기화하여 로컬 저장소가 원격 저장소의 100% 복사본이 되도록 합니다. 즉, 이러한 저장소에서 특정 파일이 다를 경우 로컬 저장소를 원격 저장소로 재정의하고 원격 저장소에 없는 파일이 있으면 로컬 파일이 제거됩니다.
원격 저장소를 새로 복제하는 것 외에 다른 방법이 있습니까?
로컬 변경/커밋을 무시하는 원격과 로컬 gitrepo를 한 번에 동기화하는 것과 유사한 질문입니다.
git fetch --prune
-p, --prune
가져오기 전에 원격에 더 이상 존재하지 않는 원격 추적 참조를 제거합니다.git fetch frune 옵션 docogit-scm
그pull
명령에도 다음이 있습니다.prune
옵션(--prune
또는-p
git-scm 문서 참조
git pull -p
다음 단계를 수행합니다.
git reset --hard HEAD
git clean -f -x -d -n
그때는 없이-n
이렇게 하면 모든 로컬 변경 사항이 처리됩니다.이제 그 커밋들은...
git status
다음과 같은 행을 기록합니다.
Your branch is ahead of 'xxxx' by N commits.
이제 숫자 'N'을 기록합니다.
git reset --hard HEAD~N
git pull
그리고 마지막으로:
git status
추가/커밋할 항목이 표시되지 않아야 합니다.모두 깨끗합니다.
그러나 새 복제본도 동일한 작업을 수행할 수 있지만 속도가 훨씬 느립니다.
===장비 ===
시간이 지남에 따라 저의 기트 지식이 조금씩 향상됨에 따라, 저는 동일한 것을 할 수 있는 또 다른 간단한 방법으로 생각해냈습니다.다음은 방법입니다(#설명 포함).근무 지점에 있는 동안:
git fetch # This updates 'remote' portion of local repo.
git reset --hard origin/<your-working-branch>
# this will sync your local copy with remote content, discarding any committed
# or uncommitted changes.
로컬 커밋 및 변경사항은 이후에 보이지 않게 되지만 필요한 경우 커밋된 변경사항을 복구할 수 있습니다.
당신이 하고 싶은 것
git fetch --prune origin
git reset --hard origin/master
git clean -f -d
이렇게 하면 로컬 레포가 원격 레포와 똑같이 됩니다.
오리진 및 마스터를 동기화할 원격 및 분기로 교체해야 합니다.
Git 저장소는 단순히 디렉터리와 파일의 트리일 뿐만 아니라 분기와 병합을 포함할 수 있는 해당 트리의 기록도 저장한다는 점을 이해해야 합니다.
리포지토리에서 가져올 때 해당 분기의 전체 또는 일부를 리포지토리로 복사합니다.그런 다음 이들은 저장소에 "원격 추적 분기"로 저장됩니다. 예를 들어 다음과 같은 이름의 분기가 있습니다.remotes/origin/master
그런 것들.
원격 저장소에서 새 커밋을 가져오더라도 로컬 작업 복사본은 변경되지 않습니다.
. 이 커밋은 " 작업복있커다습니밋이된웃"입니다.HEAD
이 커밋은 일반적으로 로컬 지점 중 하나의 팁입니다.
로컬 지점(또는 모든 로컬 지점)을 해당 원격 지점으로 업데이트한 다음 최신 지점을 확인하십시오.
복사본과 수 ) 먼저 이 아닌 모든 합니다.git clean
). 하고 그런다업트지해로당는지체다사니용합고를 git reset
가져온 원격 분기로 전환할 수 있습니다.(git pull
원격 분기의 모든 업데이트를 로컬 업데이트에 통합하거나 로컬 커밋이 있는 경우 병합 커밋을 만들 수 있습니다.)
그러나 작업 복사본과 로컬 커밋 모두에서 로컬 변경사항을 잃게 됩니다.원하는 항목인지 확인하십시오. 그렇지 않으면 새 분기를 사용하는 것이 좋습니다. 그러면 로컬 커밋이 저장됩니다.그리고 사용git stash
아직 커밋되지 않은 변경 내용을 저장합니다.)
편집: 로컬 분기가 하나만 있고 원격 분기가 하나만 추적하는 경우에는 다음을 수행하면 됩니다.
git pull
검색할 수 있습니다.
추적된 모든 원격 분기의 현재 버전을 가져오고 현재 분기(및 작업 디렉터리)를 추적 중인 원격 분기의 현재 버전으로 업데이트합니다.
로컬 리포지토리를 재설정하고 원격 분기와 동기화
명령:오리진 및 마스터를 동기화할 원격 및 분기로 교체해야 합니다.
git fetch origin && git reset --hard origin/master && git clean -f -d
또는 단계별로:
git fetch origin
git reset --hard origin/master
git clean -f -d
이제 로컬 분기가 원격 분기의 정확한 복사본(커밋 및 모든 복사본)이 됩니다.
명령 출력:
다음은 Forge agit 저장소의 로컬 복제본에서 명령을 실행하는 예입니다.
sharkbook:forge lbaxter$ git fetch origin && git reset --hard origin/master && git clean -f -d
HEAD is now at 356cd85 FORGE-680
Removing forge-example-plugin/
Removing plugin-container-api/
Removing plugin-container/
Removing shell/.forge_settings
sharkbook:forge lbaxter$
(이 정보는 Git 사용 설명서에서 가져온 것입니다.)
저도 배우고 있기 때문에 질문에 대한 답은 아니지만 누군가에게 도움이 될 수 있습니다.
- 된 경우 됩니다(" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 으로 합니다.
git branch -r
) - 상태로 () 이러한예복을만최상들면려태로신고동화기하사트과지본업점데이원격예▁to()면만▁and들려화동▁use기▁update이)▁(러:▁copies▁these로태)를 사용합니다.
git fetch
사용자 지정으로 생성된 기존 분기에는 영향을 주지 않습니다. - 의 새 한 것으로 ).
git add origin /path/to/repository
를 사용합니다.git checkout origin/branch_name
지점의 내용이 됩니다.branch_name
분기된 레포를 동기화하는 경우 다음 단계를 수행할 수 있습니다.
Git에서 포크 저장소를 동기화하는 방법
현재 Git 분기를 확인합니다.
git branch
마스터에 없는 경우 마스터로 체크아웃
git checkout master
올바른 액세스 권한이 있는 경우 업스트림 리포지토리 가져오기
git fetch upstream
아래 오류가 발생하면 실행합니다.
git remote add upstream git@github.com:upstream_clone_repo_url/xyz.git
fatal: 'upstream/master' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
이제 다음 명령을 실행합니다.
git fetch upstream
마스터에 있는 경우 업스트림/마스터를 마스터 분기로 병합합니다.
git merge upstream/master
바로 그거야!
확인차를 통해 확인
git remote
구체적인 "는 " " "입니다.git remote -v
업스트림 repo에 대한 커밋 권한도 있다면 로컬 업스트림 브랜치를 생성하여 업스트림으로 이동하는 작업을 수행할 수 있습니다.
원격 저장소의 미러를 원하는 것처럼 들립니다.
git clone --mirror url://to/remote.git local.git
이 명령은 맨 저장소를 만듭니다.맨 저장소를 원하지 않으면 상황이 더 복잡해집니다.
로컬 분기를 미러링하고 추적하기 위해 원격에 새 분기를 생성하려는 경우(또는 그 반대의 경우) 영구 수정 사항은 다음과 같습니다.
git config --global push.default current
git clone을 실행한 후에는 항상 이 명령을 사용하여 로컬 git을 구성합니다.로컬-원격 지점 "Git fatal:현재 분기에 업스트림 분기가 없습니다." 오류가 발생합니다.
이 스크립트는 원격에 없는 로컬 원격을 확인하고 로컬에서 제거합니다.
git fetch --prune; git branch -vv | egrep -v "(\[origin\/[a-zA-Z0-9/_-]+\])" | awk "{print \$1}" | xargs git branch -D
깃 후크를 사용하면 됩니다.업데이트 후 다른 레포로 변경된 내용을 푸시하는 후크를 만들기만 하면 됩니다.
물론 병합 충돌이 발생할 수 있으므로 이를 처리하는 방법을 강구해야 합니다.
언급URL : https://stackoverflow.com/questions/6373277/synchronizing-a-local-git-repository-with-a-remote-one
'source' 카테고리의 다른 글
ASP.net/C # 앱 구성 파일 값에 앰퍼샌드를 추가하려면 어떻게 해야 합니까? (0) | 2023.05.15 |
---|---|
클래스에서 Angular 피쳐를 사용하고 있지만 장식되지 않았습니다.명시적인 각도 장식기를 추가하십시오. (0) | 2023.05.15 |
.text()를 사용하여 하위 태그에 중첩되지 않은 텍스트만 검색 (0) | 2023.05.10 |
람다 특성 값 선택기(파라미터) (0) | 2023.05.10 |
문서화 수행DB는 쿼리에서 LIKE 키워드를 지원합니까? (0) | 2023.05.10 |