이것이 내가 자주 사용하는 것입니다.
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
이 변화의 또 다른 지점에 대신 체크 아웃 / 지역 마스터를 변경 지점을 개발,하지만하지 않는 좋은 방법은 예를 들어, 변경 유형, 앞에 붙은 지점 이름이라고 주 feat/
, chore/
, fix/
, 등이 따라서 만 필요 마스터에서 변경 사항을 푸시하지 않고 변경 사항을 가져옵니다. 다른 사람들이 기여하는 다른 지점들도 마찬가지입니다. 따라서 위의 내용은 다른 사람이 커밋 한 분기에 변경 사항을 커밋하고 재설정해야하는 경우에만 사용해야합니다. 그렇지 않으면 나중에 다른 사람들이 푸시하는 브랜치로 푸시하지 말고 체크 아웃하고 체크 아웃 된 브랜치를 통해 해당 브랜치를 푸시하십시오.
로컬 브랜치를 업스트림 브랜치의 최신 커밋으로 재설정하려는 경우 지금까지 효과적인 것은 다음과 같습니다.
리모컨을 확인하고, 업스트림 및 오리진이 예상 한 것인지 확인하십시오 ( git remote add upstream <insert URL>
예 : 예상치 않은 경우 , 예를 들어 포크 한 원래 GitHub 리포지토리 및 / 또는)를 사용하십시오 git remote add origin <insert URL of the forked GitHub repo>
.
git remote --verbose
git checkout develop;
git commit -m "Saving work.";
git branch saved-work;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force
GitHub에서 작업을 저장하기 위해 로컬 이름과 동일한 이름으로 지점을 체크 아웃 할 수도 있습니다.하지만 원산지 개발이 로컬 저장된 작업 브랜치와 동일한 변경 사항이있는 경우 필요하지 않지만. 개발 브랜치를 예로 사용하고 있지만 기존 브랜치 이름이 될 수 있습니다.
git add .
git commit -m "Reset to upstream/develop"
git push --force origin develop
그런 다음 개발의 변경 사항을 유지하면서 충돌이있는 동안 이러한 변경 사항을 다른 지점과 병합 해야하는 경우 다음을 사용하십시오.
git merge -s recursive -X theirs develop
사용하는 동안
git merge -s recursive -X ours develop
branch_name의 충돌하는 변경 사항을 보존합니다. 그렇지 않으면git mergetool
.
모든 변경 사항이 함께 :
git commit -m "Saving work.";
git branch saved-work;
git checkout develop;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
git add .;
git commit -m "Reset to upstream/develop";
git push --force origin develop;
git checkout branch_name;
git merge develop;
업스트림 / 개발 대신 커밋 해시, 다른 분기 이름 등을 사용할 수 있습니다. Oh My Zsh와 같은 CLI 도구를 사용하여 분기가 녹색인지 확인하여 커밋 할 것이 없으며 작업 디렉토리가 깨끗하다는 것을 확인하십시오 ( )로 확인하거나 확인할 수 git status
있습니다. UML 다이어그램, 라이센스 헤더 등과 같이 커밋에 의해 자동으로 추가 된 항목이있는 경우 업스트림 개발에 비해 커밋을 실제로 추가 할 수 있으므로이 경우 필요한 경우 변경 사항을 origin develop
로 가져올 수 upstream develop
있습니다.
git status
두 번째 명령 의 출력에 따르면git reset --hard HEAD
실패했습니다. 그러나 출력을 붙여 넣지 않았습니다. → 불완전한 질문.