일부 파일의 변경 내용을 실행 취소
코딩하는 동안 저는 무슨 일이 일어나고 있는지 추적하기 위해 일부 파일에 인쇄문을 추가했습니다.
작업이 완료되면 일부 파일의 변경 내용을 되돌릴 수 있지만 실제로 작업한 파일은 커밋할 수 있습니까?
파일에 인쇄를 추가했다고 합니다.A
하지만 나는 파일을 수정했습니다.B
.B
내가 저지르고 싶은 것은A
저는 예전 상태로 돌아가고 싶습니다.
A 파일의 변경 사항에 따라 이 작업을 수행하는 기본적인 방법은 세 가지가 있습니다.아직 변경사항을 색인에 추가하거나 커밋하지 않은 경우, 체크아웃 명령을 사용하면 리포지토리와 일치하도록 작업 복사본의 상태가 변경됩니다.
git checkout A
이미 인덱스에 추가한 경우 reset:
git reset A
이를 커밋한 경우 revert 명령을 사용합니다.
# the -n means, do not commit the revert yet
git revert -n <sha1>
# now make sure we are just going to commit the revert to A
git reset B
git commit
반대로 커밋했지만 커밋에 되돌리고 싶지 않은 파일이 많이 포함된 경우 위의 방법에는 "Reset B" 명령이 많이 포함될 수 있습니다.이 경우 다음 방법을 사용할 수 있습니다.
# revert, but do not commit yet
git revert -n <sha1>
# clean all the changes from the index
git reset
# now just add A
git add A
git commit
또 다른 방법으로는 rebase -i 명령을 사용해야 합니다.편집할 커밋이 두 개 이상 있는 경우 이 작업이 유용할 수 있습니다.
# use rebase -i to cherry pick the commit you want to edit
# specify the sha1 of the commit before the one you want to edit
# you get an editor with a file and a bunch of lines starting with "pick"
# change the one(s) you want to edit to "edit" and then save the file
git rebase -i <sha1>
# now you enter a loop, for each commit you set as "edit", you get to basically redo that commit from scratch
# assume we just picked the one commit with the erroneous A commit
git reset A
git commit --amend
# go back to the start of the loop
git rebase --continue
출처: http://git-scm.com/book/en/Git-Basics-Undoing-Things
git checkout -- 수정된 file.dll
$ git 상태
수정된 파일이 표시됩니다.
$git checkout -- modified file.dll
$git 상태
git add B # Add it to the index
git reset A # Remove it from the index
git commit # Commit the index
망짓점:git checkout A
예;
git commit FILE
파일만 커밋합니다.그러면 사용할 수 있습니다.
git reset --hard
다른 파일의 로컬 변경 내용을 실행 취소합니다.
제가 모르는 다른 방법이 있을지도 모릅니다...
편집: 또는 NicDumZ가 말했듯이 변경 내용을 취소할 파일만 Git-checkout합니다(최적의 해결책은 커밋할 파일이 더 많은지 또는 취소할 파일이 더 많은지에 달려 있습니다:-)
"git add <file>"(또는 "git add --interactive" 또는 "git gui"(대화형 커밋 옵션이 있음)를 사용하여 커밋에서 수행할 변경 사항을 간단히 표시한 다음 "git commit -a" 대신 "git commit"을 사용할 수 있습니까?
(예를 들어) 귀하의 상황에서는 다음과 같습니다.
prompt> git add B
prompt> git commit
파일 B에 대한 변경 사항만 수행되고 파일 A는 작업 영역 버전의 인쇄문과 같이 "더러운" 상태로 유지됩니다.이러한 인쇄문을 제거하려면 다음을 사용하기에 충분합니다.
prompt> git reset A
또는
prompt> git checkout HEAD -- A
커밋된 버전(HEAD의 버전, 즉 "git show HEAD:A" 버전)으로 되돌립니다.
언급URL : https://stackoverflow.com/questions/933329/git-undo-changes-in-some-files
'programing' 카테고리의 다른 글
특정 문자로 시작해야 하는 스크립트 문자열 유형 (0) | 2023.06.26 |
---|---|
OnClick vs OnClient asp를 클릭합니다.체크박스? (0) | 2023.06.26 |
mongoDB 설치(하위 프로세스 실패, 오류 번호 100으로 종료) (0) | 2023.06.26 |
텍스트 파일을 단일 문자열로 가져오기 (0) | 2023.06.26 |
"일시 중단됨" 상태와 디스크 높음 상태는 무엇입니까?IO는 sp_who2에서 온 것입니까? (0) | 2023.06.26 |