programing

이전 커밋이 아닌 특정 커밋을 리모트에 푸시하려면 어떻게 해야 합니까?

css3 2023. 4. 10. 22:05

이전 커밋이 아닌 특정 커밋을 리모트에 푸시하려면 어떻게 해야 합니까?

다른 파일에 대해 몇 가지 커밋을 했지만, 지금까지는 특정 커밋만 리모트 저장소에 푸시하고 싶습니다.

그게 가능한가요?

특정 커밋을 푸시업하려면 다음과 같이 입력합니다.

git push <remotename> <commit SHA>:<remotebranchname>

제공된<remotebranchname>는 리모트에 이미 존재합니다.(그렇지 않은 경우는,git push <remotename> <commit SHA>:refs/heads/<remotebranchname>자동 생성)을 클릭합니다.

이전 커밋을 푸시하지 않고 커밋을 푸시하려면 먼저 다음을 사용해야 합니다.git rebase -i커밋 순서를 변경합니다.

다른 답변은 재주문 설명에 없습니다.

git push <remotename> <commit SHA>:<remotebranchname>

단일 커밋을 푸시합니다만, 그 커밋은 로컬, 푸시되지 않은 커밋 중 가장 오래된 커밋이어야 합니다.또한 top, first 또는 tip 커밋과 혼동하지 마십시오.이것은 모두 애매한 설명입니다.커밋은 가장 오래된 커밋(최근 커밋과는 거리가 먼 커밋)에 필요합니다.가장 오래된 커밋이 아닌 경우 가장 오래된 로컬, 푸시되지 않은 SHA에서 지정된 SHA로 모든 커밋이 푸시됩니다.커밋 순서를 변경하려면 다음 명령을 사용합니다.

git rebase -i HEAD~xxx

커밋의 순서를 변경한 후에는 커밋을 리모트저장소로 안전하게 푸시할 수 있습니다.

요약하자면, 저는

git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master

리모트 마스터 브랜치에 단일 커밋을 푸시합니다.

참고 자료:

  1. http://blog.dennisrobinson.name/push-only-one-commit-with-git/
  2. http://blog.dennisrobinson.name/reorder-commits-with-git/

다음 항목도 참조하십시오.

  1. git: 로컬 기본 재배치 후 풀 후 중복 커밋
  2. git: 단일 커밋 푸시, 기본 재배치, 중복 커밋

를 사용하는 것이 좋습니다.git rebase -i; 푸시할 커밋을 커밋의 맨 위로 이동합니다.그 후 사용git logrebased commit의 SHA를 취득하려면 체크하고 푸시합니다.기본 재설정에 의해 다른 모든 커밋이 현재 푸시된 커밋의 자식임을 확인할 수 있으므로 향후 푸시도 정상적으로 작동합니다.

체리픽은 특정 커밋을 푸시할 때 다른 모든 방법과 비교하여 가장 잘 작동합니다.

그 방법은 다음과 같습니다.

새 분기 만들기 -

git branch <new-branch>

새로운 브랜치를 오리진 브랜치로 갱신합니다.

git fetch

git rebase

이러한 조작에 의해, 원래의 것과 완전하게 같은 것을 얻을 수 있습니다.

Cherry-pick thesha id밀고 싶은 거...

git cherry-pick <sha id of the commit>

당신은 그것을 얻을 수 있습니다.sha id「」를 실행해 .

git log

원점으로 밀어넣기 -

git push

실행합니다.gitk모든 것이 당신이 원하는 대로 보이도록 할 수 있습니다.

저는 당신이 다시 그 약속으로 돌아가서 그것을 추진해야 한다고 생각합니다. '아예'를 쓰셔도 됩니다.cherry-pick새로운 브랜치로 커밋하여 리모트저장소의 브랜치에 푸시합니다.예를 들어 다음과 같습니다.

git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}

이를 위한 가장 간단한 방법은 두 가지 명령을 사용하는 것입니다.

먼저 로컬 디렉토리를 원하는 상태로 만듭니다.그리고나서,

git push origin +HEAD^:someBranch

커밋을 에서합니다.someBranch로컬이 아닌 리모트만 사용할 수 있습니다. 번 할 도 있고 수도 있어요.+HEAD^리모트에서 일괄 삭제하는 커밋의 수를 반영합니다.하세요.

git push origin someBranch

정상적으로 리모콘을 갱신합니다.

다른 디렉토리에서 다음 작업을 수행할 수도 있습니다.

  • git [저장소]를 클론
  • 지금 바로 복제한 저장소의 .git 디렉토리로 원래 저장소의 .git 디렉토리를 덮어씁니다.
  • git add 및 git 원본 커밋

그냥 사용했어요

git cherry-pick 'commit의 sha id'를 선택합니다.

그리고 나서.

git push

제 경우 로컬 브랜치 이름은 'master'이고 리모트 디폴트 브랜치 이름도 'master'였습니다.

언급URL : https://stackoverflow.com/questions/3230074/how-can-i-push-a-specific-commit-to-a-remote-and-not-previous-commits