Git: 이전 커밋을 변경하고 푸시합니다. [닫기]

Git: 이전 커밋을 변경하고 푸시합니다. [닫기]

저장소를 검토하는 중이며 몇 가지 의견을 제시하고 싶습니다. 그러면 의견 추가, 일부 변경 등과 같은 더 많은 콘텐츠가 추가될 것입니다.

이전에 커밋된 파일 내용을 변경하고 푸시하는 방법, 커밋 기록이 변경되고 영향을 받은 모든 파일이 변경된다는 것을 알고 있지만 git은 영향을 받은 파일을 추가 커밋(-->마스터)과 비교하고 긍정적인 변경을 구현합니까?

답변1

당신이 요구하는 것은 역사를 다시 쓰는 것입니다N제출물이 0개 있습니다. 이는 일반적으로 원격 저장소를 기반으로 하는 다른 저장소와 동기화되지 않게 만들기 때문에 좋지 않은 생각입니다. 이렇게 하면 다른 사람이 더 이상 병합할 수 없을 정도로 상황이 복잡해지고, 다른 저장소에서 해당 분기를 삭제하고 새로 수정된 분기를 끌어내려야 합니다. 이 경우 새 분기를 시작하고 여기에 주석을 추가할 수도 있습니다. 어느 쪽이든, 이것은 약간 혼란스러울 것입니다.

이렇게 하려면 병합을 확인한 다음(예: 커밋 및 을 사용함 A) 해당 브랜치로 돌아가서(이 브랜치를 호출함)BCA검토, 원본도 그렇고풀 리퀘스트):

...A --B --C    (pull-request)
    \
     A'         (review)

git checkout HEAD{3}
git checkout -b review

그런 다음 댓글을 수정하고 체크인하세요.

git add . # or specify the specific files 
git commit -m "message" --author="original author"

또는 동일한 메시지/작성자를 원하지만 입력하고 싶지 않은 경우 다음 명령을 사용할 수 있습니다. 이 명령은 스크립트 또는 별칭 git 명령에 넣습니다.

git add $(git diff-tree --no-commit-id --name-only -r <sha-of-A>)
git commit -m "$(git rev-list --format=%B <sha-of-a>)" --author="$(git rev-list --format=%an <sha-of-A>)"

적절한 상위에서 적절한 SHA를 검색하여 자동으로 수행할 수도 있지만 분기 상위와 병합 상위 atm을 구별하는 방법을 잘 모르겠습니다.

다음 B으로 병합검토

git merge <sha-of-B>

그런 다음 댓글을 수정하고 체크인하세요. (위 참조).

완료될 때까지 이 작업을 계속하세요.

...A --B --C    (pull-request)
    \   \   \
     A'--B'--C' (review)

그런 다음 원하는 경우 원래 브랜치로 다시 병합하거나 해당 리뷰 브랜치를 검토 중인 사람에게 반환할 수 있습니다.

관련 정보