programing

이전 커밋에 파일을 추가하는 방법은 무엇입니까?

stoneblock 2023. 8. 12. 09:46

이전 커밋에 파일을 추가하는 방법은 무엇입니까?

지난 한 시간 정도 동안 나는 파일을 수정했습니다.

A
ATest
B
BTest

내 커밋 메시지가 실제 변경 사항과 일치하는지 확인하려면 커밋됨A인상착의가 있는유감스럽게도 저는 포함하지 않았습니다.ATest그 약속에.

한편, 여전히 헌신적이지 않은 것은B그리고.BTest.

이 시점에서 진행하는 가장 좋은 방법은 무엇입니까?다음 중 하나를 원합니다.

  1. 현재 커밋되지 않은 파일에 영향을 주지 않고 이전 커밋을 되돌리시겠습니까?
  2. 이전 커밋에 동일한 설명의 다른 파일을 추가하시겠습니까?

이전 커밋에 새 파일 추가하기

$ git add new-file
$ git commit --amend

사용할 수 있습니다.git commit --amend --no-edit커밋 메시지를 변경하지 않으려는 경우

여기 놀랍게도 유용한 재미있는1 흐름도가 있습니다. 원래 질문과 수정된 "마지막 약속이 아니었다면?" 질문 모두에 대해 올바른 권장 사항을 제공합니다.

Git-pretty flowchart

1 http://justinhileman.info/article/git-pretty/ 에서 발췌

이전 커밋에 파일 추가

작업 중인 지점을 이미 푸시한 경우 맨 페이지를 먼저 참조하십시오.특히 다음 사항에 유의하십시오.

다른 사람들이 작업을 기반으로 한 분기를 다시 작성(또는 다른 형식의 다시 작성)하는 것은 좋지 않은 생각입니다. 다운스트림에 있는 모든 사용자는 수동으로 기록을 수정해야 합니다.

하지만, 만약 여러분이 여러분의 나뭇가지를 밀지 않았다면, 위험 지역에 들어갈 준비를 하세요.

커밋 해시 찾기

먼저 추가할 커밋의 커밋 해시를 알아야 합니다.이는 다음과 같습니다.git log실제로 추가할 커밋보다 커밋을 먼저 지정하려고 합니다. (변경할 커밋 조각의 시작 인덱스로 생각할 수 있습니다.)실행하여 올바른 커밋을 확인할 수 있습니다.git log -1 HEAD~n여기서 'n'은 올바른 커밋을 가질 때까지 증분하는 정수입니다.아니면 셀 수도 있고요, 정말로요.

하지만, 만약 당신이 세고 있다면, 적어도 당신이 올바른 약속을 하고 있는지 확인하세요.git log -1 HEAD~5또는 당신의 수가 무엇이던지.추가할 커밋이 표시되지 않아야 합니다.

Danger, 헤

이제 실행할 준비가 되었습니다.git rebase -i HEAD~5또는 대신 커밋 해시를 사용합니다.git rebase -i hash^즐겨찾기 텍스트 편집기와 편집할 파일이 나타납니다.파일은 rebase 명령의 작업관리 목록입니다.파일의 주석은 사용자에게 어떤 옵션이 있는지 알려줍니다.추가할 커밋이 있는 줄을 찾고 해당 줄에서 '선택'을 '편집'으로 변경하면 됩니다.이제 파일을 저장하고 닫습니다.

기본 재배치는 사용자가 편집하도록 지시한 커밋에 도달하면 중지됩니다. 실행git status추가 정보를 확인할 수 있습니다.을 커밋추준으로 합니다.git add .또는 파일 이름이 무엇이든.

그럼, 하시오git commit --amend또는git commit --amend --no-edit(커밋 메시지를 편집하지 않으려는 경우).편집하기로 선택한 커밋이 수정됩니다.

마지막으로, 실행git rebase --continue.

의심스러운 경우 Linux에서 문서 출력을 읽어보면 더 자세히 알 수 있습니다.man git-rebase또는git --help rebase.

언급URL : https://stackoverflow.com/questions/14096721/how-to-add-file-to-a-previous-commit