programing

원격 저장소에 푸시된 Git의 특정 커밋 실행 취소

i4 2023. 5. 21. 10:56
반응형

원격 저장소에 푸시된 Git의 특정 커밋 실행 취소

다음과 같은 특정 커밋을 실행 취소하는 가장 간단한 방법은 무엇입니까?

  • 머리나 머리가 아닌
  • 원격으로 푸시되었습니다.

최근의 약속이 아니라면,

git reset HEAD

작동하지 않습니다.원격지로 밀려났기 때문에

git rebase -i

그리고.

git rebase --onto

리모컨에 문제가 발생할 수 있습니다.

더 그렇습니다, 저는 역사를 수정하고 싶지 않습니다.만약 나쁜 코드가 있었다면, 그것은 역사에 있었고 볼 수 있습니다.저는 단지 그것을 작업 복사본에 넣고 싶을 뿐이고, 저는 역 합병 커밋에 개의치 않습니다.

즉, 다음 svn 명령에 해당하는 Git는 무엇입니까?

svn merge -r 303:295 http://svn.example.com/repos/calc/trunk

295에서 302까지의 모든 변경 사항을 새 커밋으로 역병합하여 제거합니다.

svn merge -c -302 ^/trunk

302 커밋을 취소합니다. 물론 해당 커밋의 변경 사항을 역으로 병합하는 다른 커밋을 추가합니다.

저는 Git에서 꽤 간단한 수술과 상당히 일반적인 사용 사례가 되어야 한다고 생각했습니다.원자적 커밋의 요점은 또 무엇입니까?

우리는 커밋이 완벽하게 원자적이라는 것을 보장하기 위해 스테이징 스태킹과 모든 것을 가지고 있는데, 당신은 하나 이상의 원자적 커밋을 쉽게 취소할 수 있어야 하지 않나요?

다음을 사용하여 커밋의 해시 식별git log그 다음에 사용git revert <commit>이러한 변경 사항을 제거하는 새 커밋을 만듭니다.어떤 면에서는.git revert의 반대입니다.git cherry-pick후자는 패치가 없는 분기에 패치를 적용하고 전자는 패치가 있는 분기에서 패치를 제거합니다.

나는 자동 커밋이 마음에 들지 않습니다.git revert그렇습니다, 그래서 이것은 일부 사람들에게 도움이 될 수 있습니다.

자동 커밋이 아닌 수정된 파일을 원할 경우--no-commit

% git revert --no-commit <commit hash>

그것은 그것과 같습니다.-n

% git revert -n <commit hash>

이미 추진된 일이기 때문에 역사를 직접 조작해서는 안 됩니다. git revert커밋 기록을 조작하지 않도록 새 커밋을 사용하여 커밋에서 특정 변경 사항을 되돌립니다.

되돌리려는 커밋이 병합된 커밋(이미 병합됨)인 경우 다음 중 하나를 수행해야 합니다.-m 1또는-m 2옵션은 아래와 같습니다.이렇게 하면 병합된 부모 커밋이 사용할 커밋을 git에 알 수 있습니다.자세한 내용은 여기에서 확인할 수 있습니다.

  • git revert <commit> -m 1
  • git revert <commit> -m 2

언급URL : https://stackoverflow.com/questions/2318777/undo-a-particular-commit-in-git-thats-been-pushed-to-remote-repos

반응형