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
변경 내용을 되돌리는 경우에만 해당됩니다.더 좋은 방법은 없습니까?
를 사용하면 작업 복사본과 인덱스 사이의 차이에서 개별 힙을 선택하여 되돌릴 수 있습니다.마찬가지로 인덱스에 추가할 헝크를 선택할 수 있으며 인덱스와 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의 답변은 제 git 버전 1.9.2.msysgit.0과 충돌합니다. 이유를 알 수 없습니다. 그래서 저의 접근 방식은 제가 유지하고 싶은 hunk를 단계별로 배치하고, 작업 복사본의 변경 사항을 폐기한 다음 단계별로 전환하는 것입니다.
$ 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
'programing' 카테고리의 다른 글
ORA-00997에 대한 해결 방법: LONG 데이터 유형의 잘못된 사용 (0) | 2023.07.22 |
---|---|
컴파일러에 의한 구조 재정렬 (0) | 2023.07.22 |
크기 속성의 크기가 0입니다. (0) | 2023.07.17 |
Firebase에서 index.html 파일을 실행하지 않음 (0) | 2023.07.17 |
사전 대 객체 - 어떤 것이 더 효율적이고 왜? (0) | 2023.07.17 |