마지막 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 프롬프트에서 다음을 수행합니다.
use "git rm --cached <file>..." to unstage
파일이 보고서에 없는 경우.파일을 저장하는 단계를 해제합니다.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
'programing' 카테고리의 다른 글
ASP.NET MVC WebAPI 404 오류 (0) | 2023.06.30 |
---|---|
Node.js에서 Base64 인코딩을 수행하려면 어떻게 해야 합니까? (0) | 2023.06.30 |
vuex를 사용하여 단방향 바인딩을 구성합니다. (0) | 2023.06.30 |
T-SQL의 주 번호에서 날짜 가져오기 (0) | 2023.06.30 |
Bash 스크립트: #!/bin/bash는 무엇을 의미합니까? (0) | 2023.06.30 |