git에서 비 단계적 변경의 일부를 취소
git에서 스테이지되지 않은 변경 사항의 일부를 실행 취소하지만 나머지는 스테이지되지 않은 상태로 유지하려면 어떻게합니까? 내가 알아 낸 방법은 다음과 같습니다.
git commit --interactive
# Choose the parts I want to delete
# Commit the changes
git stash
git rebase -i master # (I am an ancestor of master)
# Delete the line of the most recent commit
git stash apply
이것은 효과가 있지만 git commit --interactive변경 사항을 되 돌리는 것과 같은 것이 있으면 좋을 것 입니다. 더 나은 방법이 있습니까?
당신은 사용할 수 있습니다 git checkout -p당신은 되돌리기에 작업 카피와 지수 사이의 DIFF에서 개별 심술쟁이를 선택할 수있는. 마찬가지로, git add -p인덱스에 추가 할 덩어리를 선택할 git reset -p수 있으며 인덱스와 HEAD 사이의 차이에서 인덱스에서 제거 할 개별 덩어리를 선택할 수 있습니다.
$ git checkout -p file/to/partially/revert
# or ...
$ git checkout -p .
이러한 변경 사항을 되돌리기 전에 보존하기 위해 미리 git 저장소를 스냅 샷으로 만들고 싶다면 다음과 같이하십시오.
$ git stash; git stash apply
자주 사용한다면 별명을 지정할 수 있습니다.
[alias]
checkpoint = !git stash; git stash apply
좋은 편집기 모드 또는 플러그인을 사용하면 개별 덩어리 또는 줄을 쉽게 되돌릴 -p수 있습니다.이 옵션은 때때로 사용하기가 약간 어색 할 수 있으므로 되돌릴 줄을 직접 선택할 수 있습니다. Git 작업에 매우 유용한 Emacs 모드 인 Magit을 사용 합니다. Magit에서을 실행 magit-status하고 되돌릴 변경 사항의 차이점을 찾고 되돌릴 줄을 선택하십시오 (또는 한 번에 덩어리를 되 돌리지 않으려면 되돌릴 덩어리에 커서를 놓으십시오) 한 번에 한 줄씩)을 눌러 k해당 특정 줄을 되돌립니다. Emacs를 사용한다면 Magit을 강력히 추천합니다.
git diff > patchfile
그런 다음 패치 파일을 편집하고 실행 취소하지 않으려는 부분을 제거하십시오.
patch -R < patchfile
넌 할 수있어
git checkout master -- path/to/file
재설정하려는 각 파일마다.
어때요?
- 색인의 변경 사항으로 영향을받는 파일을 제거하십시오.
git add -p색인에 원하는 변경 사항 만 다시 추가 하는 데 사용 하십시오.
'git status'를 실행하면 다음과 같이 표시됩니다.
$ git status
# On branch fr/fr.002
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: makefile
#
no changes added to commit (use "git add" and/or "git commit -a")
$
따라서 스테이지되지 않은 편집을 취소하려면 다음을 실행하라는 메시지가 표시됩니다.
git checkout -- makefile
Brian Campbell의 대답은 알 수없는 이유로 내 자식 버전 1.9.2.msysgit.0과 충돌하므로 내 접근 방식은 유지하려는 덩어리를 스테이징하고 작업 사본의 변경 사항을 버린 다음 무대를 비우는 것입니다.
$ git add -p
... select the hunks to keep
$ git checkout -- .
$ git reset HEAD .
당신이 할 수있는 git checkout그것을 실행 취소 할 부품의 이름을 이름을 제공합니다.
참고 URL : https://stackoverflow.com/questions/1981830/undo-part-of-unstaged-changes-in-git
'IT story' 카테고리의 다른 글
| asp.net MVC의 @RenderSection는 무엇입니까 (0) | 2020.06.10 |
|---|---|
| socket.io 방 또는 네임 스페이스? (0) | 2020.06.10 |
| 새 파일이나 삭제 된 파일에 대해 gulp.watch가 트리거되지 않습니까? (0) | 2020.06.10 |
| JavaScript : 선택에 따라 양식 동작 속성 값을 변경하는 방법은 무엇입니까? (0) | 2020.06.10 |
| 자바 스크립트에서 페이지가 새로 고침되거나 새로 고침되는지 확인 (0) | 2020.06.10 |