programing

마지막 Git add는 어떻게 취소할 수 있습니까?

closeapi 2023. 6. 30. 22:23
반응형

마지막 Git add는 어떻게 취소할 수 있습니까?

마지막으로 준비된(커밋되지 않은) GIT 변경 단계를 해제할 수 있습니까?현재 분기에 준비된 파일과 그렇지 않은 파일이 많다고 가정합니다.어느 순간, 어떤 어리석은 프로그래머가 실수로 실행했습니다.

git add -- .

...방법:

git checkout -- .

이 프로그래머는 이제 마법의 깃 명령을 사용하여 마지막 변경 사항을 해제할 수 있습니까?아니면 애초에 실험을 하기 전에 범행을 저질렀어야 했을까요?

사용할 수 있습니다.git reset마지막으로 커밋한 후 추가한 모든 파일을 '준비 해제'합니다.

일부 파일만 분할하려면 다음을 사용합니다.git reset -- <file 1> <file 2> <file n>.

또한 다음을 사용하여 파일의 일부 변경 내용을 스테이징 해제할 수 있습니다.git reset -p.

최신 Git 추가는 실행 취소할 수 없지만 모든 Git 추가는 실행 취소할 수 있습니다.add마지막 커밋 이후로 s.git reset commit 인수를 지정하지 않으면 인덱스가 재설정됩니다(단계별 변경 사항을 저장).

git reset

그래서 진짜 답은

이 프로그래머는 이제 마법의 깃 명령을 사용하여 마지막 변경 사항을 해제할 수 있습니까?

실제로는: 아니요, 마지막 단계만 해제할 수 없습니다.

이는 질문을 다음과 같은 상황에서 해석하는 경우입니다.

초기 파일:

void foo() {

}

main() {
    foo();
}

첫 번째 변경 후 다음과 같이 수행git add:

void foo(int bar) {
    print("$bar");
}

main() {
    foo(1337);
}

두 번째 변경에 이은 변경git add:

void foo(int bar, String baz) {
    print("$bar $baz");
}

main() {
    foo(1337, "h4x0r");
}

이 경우에는,git reset -p가장 작은 입도는 선이므로 도움이 되지 않습니다. git다음의 중간 상태에 대해 알지 못합니다.

void foo(int bar) {
    print("$bar");
}

main() {
    foo(1337);
}

더이상.

사용할 수 있습니다.git reset(문서 참조)

사용할 수 있습니다.

git reset

최근에 추가한 로컬 파일을 취소합니다.

 git reset file_name

특정 파일의 변경 내용을 취소합니다.

날짜 git 프롬프트에서 다음을 수행합니다.

  1. use "git rm --cached <file>..." to unstage파일이 보고서에 없는 경우.파일을 저장하는 단계를 해제합니다.
  2. use "git reset HEAD <file>..." to unstage파일이 보고서에 있고 수정된 파일로 추가하는 경우.파일을 그대로 유지하고 스테이징을 해제합니다.

내가 아는 한 당신은 그것을 되돌릴 수 없습니다.git add --그러나 위에서 언급한 대로 파일 목록의 스테이징을 해제할 수 있습니다.

추가된 모든 파일을 git for commit에서 제거하려는 경우

git reset

개별 파일을 제거하려는 경우

git rm <file>
  • 파일을 인덱스에서 제거하지만 버전이 지정된 상태로 유지하고 작업 복사본의 변경 사항을 커밋하지 않은 상태로 유지합니다.

    git reset head <file>
    
  • HEAD에서 파일을 마지막 상태로 재설정하여 변경 내용을 실행 취소하고 인덱스에서 제거합니다.

    git reset HEAD <file>
    git checkout <file>
    
    # If you have a `<branch>` named like `<file>`, use:
    git checkout -- <file>
    

    이는 다음 이후에 필요합니다.git reset --hard HEAD단일 파일에서는 작동하지 않습니다.

  • 제거한다.<file>인덱스 및 버전 관리에서 작업 복사본의 변경 사항과 함께 미버전 파일 유지:

    git rm --cached <file>
    
  • 제다한을 합니다.<file>작업 복사본 및 버전 관리에서 다음 작업을 완료합니다.

    git rm <file>
    

난이도의 크기와 규모에 따라 스크래치(임시) 브랜치를 생성하여 현재 작업을 수행할 수 있습니다.

그런 다음 원래 분기로 전환하여 체크아웃하고 스크래치 커밋에서 적절한 파일을 선택합니다.

적어도 현재 상태와 이전 상태에 대한 영구적인 기록은 있어야 합니다(이 스크래치 분기를 삭제할 때까지).

다음을 사용할 것을 제안합니다.

git rm -r --cached <your_dir>또는git rm --cached <your_file>

그것은 당신의

git add <your_dir_or_your_file>

파일을 그대로 유지하면서 뒤로 이동합니다.

언급URL : https://stackoverflow.com/questions/12132272/how-can-you-undo-the-last-git-add

반응형