특정 커밋을 원격 리포지토리로 푸시

John Wachira 2024년2월15일
특정 커밋을 원격 리포지토리로 푸시

이 문서에서는 Git의 원격 저장소에 특정 커밋을 푸시하는 프로세스를 간략하게 설명합니다. 여러 커밋이 있는 Git 리포지토리가 있고 하나의 커밋만 푸시하면 된다고 가정하면 어떻게 해야 할까요?

특정 커밋을 원격 리포지토리로 푸시

단일 커밋을 원격 리포지토리로 푸시하려면 아래 표시된 컨텍스트에서 Git 푸시 명령을 사용합니다.

$ git push <remote> <commit id>:<remote branch>

항상 그렇듯이 개념을 설명하기 위해 예제를 사용합니다.

아래 예시는 아래 이미지와 같이 4개의 커밋이 있는 데모 리포지토리를 보여줍니다.

커밋 히스토리

초기 커밋을 원격 저장소로 푸시한다고 가정합니다. 어떻게 할까요?

처음으로 원격 저장소로 푸시한다고 가정하고 다음 단계를 따릅니다.

먼저 아래와 같이 원격 저장소를 로컬 저장소에 추가합니다.

$ git remote add origin https://github.com/Wachira11ke/Demo.git

초기 커밋을 원격으로 푸시하려면 다음을 실행합니다.

$ git push origin 6b0f31a:refs/heads/master

처음으로 원격으로 푸시하기 때문에 refs/heads/master 인수를 사용하여 원격 저장소에 master 브랜치를 생성해야 합니다. 이 명령은 초기 커밋만 원격 저장소로 푸시합니다.

첫 번째 커밋, 즉 라이선스 업데이트만 푸시하려면 어떻게 해야 합니까?

git push origin c87321d:master를 실행해도 원하는 효과가 나타나지 않습니다.

Git이 지정된 커밋을 포함하여 모든 커밋을 푸시하기 때문입니다. 우리는 그것을 원하지 않습니다, 그렇죠?

첫 번째 커밋이 마지막 커밋이 되도록 커밋을 재정렬해야 합니다. Update Licenses 커밋은 Initial commit 직후에 와야 합니다.

아래와 같이 대화식 모드에서 git rebase 명령을 실행하여 이를 수행할 수 있습니다.

$ git rebase -i HEAD~3

이 명령은 텍스트 편집기를 엽니다. pick 명령을 사용하고 아래와 같이 커밋을 재정렬합니다.

git rebase

이제 텍스트 편집기를 종료하고 리베이스를 완료할 수 있습니다. 커밋 기록은 이제 다음과 같아야 합니다.

커밋 히스토리 2

이제 아래 그림과 같이 커밋을 원격 저장소로 푸시할 수 있습니다.

$ git push origin 20136f7:master

원격 저장소에는 두 개의 커밋만 포함되어야 합니다.

  1. 초기 커밋 커밋
  2. 라이선스 업데이트 커밋.

우리의 경우를 확인합시다.

원격 저장소

당신은 그것을 가지고 있습니다.

결론적으로 git push <remote> <commit id>:<remote branch>를 사용하면 특정 커밋을 원격 저장소에 푸시할 수 있습니다.

그러나 이 명령은 지정된 커밋을 포함하여 모든 커밋을 푸시합니다. 이 문제를 해결하려면 우리가 설명한 대로 git rebase 명령을 사용하여 커밋을 재정렬해야 합니다.

작가: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

관련 문장 - Git Push