programing

이전 커밋이 아닌 특정 커밋을 원격으로 푸시하려면 어떻게해야합니까?

nasanasas 2020. 9. 29. 07:54
반응형

이전 커밋이 아닌 특정 커밋을 원격으로 푸시하려면 어떻게해야합니까?


다른 파일에 대해 여러 커밋을 수행했지만 지금까지는 특정 커밋 만 원격 저장소에 푸시하고 싶습니다.

가능합니까?


주어진 커밋 을 밀어 올리 려면 다음과 같이 작성할 수 있습니다.

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 log하여 리베이스 커밋의 SHA를 가져 와서 확인하고 푸시합니다. 리베이스는 다른 모든 커밋이 이제 푸시 한 것의 자식인지 확인하므로 향후 푸시도 잘 작동합니다.


Cherry-pick은 특정 커밋을 푸시하는 동안 다른 모든 방법에 비해 가장 잘 작동합니다.

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

새 분기 만들기-

git branch <new-branch>

오리진 브랜치로 새 브랜치를 업데이트하십시오-

git fetch

git rebase

이러한 조치를 통해 오리진과 정확히 동일한 것을 갖게됩니다.

sha id푸시하고 싶은 체리 픽 -

git cherry-pick <sha id of the commit>

당신은 sha id실행 하여 얻을 수 있습니다

git log

당신의 근원으로 밀어-

git push

Run gitk to see that everything looks the same way you wanted.


I believe you would have to "git revert" back to that commit and then push it. Or you could cherry-pick a commit into a new branch, and push that to the branch on the remote repository. Something like:

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

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

반응형