Git에서 한 파일의 작업 복사 수정 내용을 실행 취소하시겠습니까?
마지막 커밋 후 작업 복사본에 있는 많은 파일을 수정했지만 최근 커밋과 동일한 상태로 리셋할 때처럼 해당 파일 중 하나에 대한 변경 내용을 취소하고 싶습니다.
다만, 그 파일 1개의 작업 카피 변경만을 실행 취소해 주세요.
그걸 어떻게 하는 거죠?
사용할 수 있습니다.
git checkout -- file
이 작업을 수행할 때마침--
하는 바와 ) 태그 식별자될 수 (nimrodm)을 사용하면 (nimrodm)는 """" ("nimrodm""을 사용합니다.)--
고입니니다다
특정 버전의 파일을 체크 아웃 할 수도 있습니다.
git checkout v1.2.3 -- file # tag v1.2.3
git checkout stable -- file # stable branch
git checkout origin/master -- file # upstream master
git checkout HEAD -- file # the version from the most recent commit
git checkout HEAD^ -- file # the version before the most recent commit
그냥 사용하다
git checkout filename
그러면 파일 이름이 현재 분기의 최신 버전으로 바뀝니다.
경고: 변경 내용이 파기됩니다.백업은 보관되지 않습니다.
git checkout <commit> <filename>
오늘 drupal 6.10으로 업그레이드 했을 때 favicon이 몇 번 덮어쓰기 되어 있는 것을 알고 다시 돌려받을 수 밖에 없었기 때문에 이것을 사용했습니다.제가 한 일은 다음과 같습니다.
git checkout 088ecd favicon.ico
파일이 이미 스테이징되어 있는 경우(파일을 편집한 후 git add 등을 실행했을 때) 변경 내용을 언스테이징합니다.
사용하다
git reset HEAD <file>
그리고나서
git checkout <file>
아직 스테이징되지 않은 경우에는
git checkout <file>
git bash를 완료했습니다.
(use "git checkout -- <file>..." to discard changes in working directory)
- Git 상태[이렇게 해서 한 개의 파일이 수정되었습니다]
- git checkout --index.devel [index.devel 파일에서 i가 변경되었습니다.
- git status [이러한 변경은 삭제되었습니다]
그 1개의 파일에 대한 이전 커밋의 변경을 원래대로 되돌리려면 , 다음의 조작을 실행할 수 있습니다.
git checkout branchname^ filename
그러면 파일이 마지막 커밋 전과 동일하게 체크 아웃됩니다.을 몇 더 , 「」를 합니다.branchname~n
표기법
2은 Git 2.23†를 도입했습니다.restore
이런 질문에 대한 해답을 알기 쉽게 하기 위해서라고 생각합니다.
git restore [--] <pathspec>...
그렇듯이, 「」는--
할 수 「은 「브런치명」이 됩니다.「브런치명」은, 「브런치명」으로 혼동할 수 없습니다.restore
do-all과 분기가 되어 있지 않습니다.checkout
)
부터 말하면, 【막막】restore
는, 「 파일」을 사용해 스테이지 된 도 있습니다.--staged
하다, 복원하다와는 HEAD
--source=<tree>
.
이 응답은 동일한 폴더 또는 여러 디렉토리 내의 여러 특정 파일에 있는 로컬 변경을 취소하는 데 필요한 명령어에 대한 응답입니다.이 답변에서는 특히 사용자가 여러 파일을 가지고 있지만 모든 로컬 변경을 실행 취소하지 않는 경우의 질문에 대해 설명합니다.
명령어(1개 또는 여러 개)를 할 수 .
git checkout -- file
하여 각
git checkout -- name1/name2/fileOne.ext nameA/subFolder/fileTwo.ext
위의 name1/name2/fileOne.ext nameA/subFolder/fileTwo.ext 사이의 공백에 주의하십시오.
동일한 폴더에 여러 파일이 있는 경우:
특정 디렉토리의 모든 파일에 대한 변경을 폐기해야 할 경우 다음과 같이 git checkout을 사용합니다.
git checkout -- name1/name2/*
위의 아스타리스크는 name1/name2 아래의 해당 위치에 있는 모든 파일을 언로드하는 기능을 합니다.
마찬가지로 다음과 같이 여러 폴더에 대한 모든 파일의 변경 내용을 취소할 수 있습니다.
git checkout -- name1/name2/* nameA/subFolder/*
위의 name1/name2/* nameA/subFolder/* 사이의 공백에 유의하십시오.
주의: name1, name2, nameA, subFolder - 이 예제의 폴더명은 모두 문제의 파일이 존재하는 폴더 또는 패키지를 나타냅니다.
, 케이스가 요. 를 들어 이 리마인더 테스트 케이스가 이것이 있다고 합시다.bash
git
:
set -x
rm -rf test
mkdir test
cd test
git init
git config user.name test
git config user.email test@test.com
echo 1 > a.txt
echo 1 > b.txt
git add *
git commit -m "initial commit"
echo 2 >> b.txt
git add b.txt
git commit -m "second commit"
echo 3 >> b.txt
변경은 캐시 내에서 스테이징되지 .git status
말합니다
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: b.txt
no changes added to commit (use "git add" and/or "git commit -a")
부터의 경우는, 「우선」, 「우선」을 합니다.git checkout
됩니다
$ git checkout HEAD -- b.txt
$ git status
On branch master
nothing to commit, working directory clean
신신면면면면면면면면면면면을 하면git reset
을 사용하다
$ git reset HEAD -- b.txt
Unstaged changes after reset:
M b.txt
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: b.txt
no changes added to commit (use "git add" and/or "git commit -a")
않은 " " 입니다.git reset
다르지 , ★★★★★★★★★★★★★★★★★★★★★★★」git checkout
을 사용하다
위의 된 내용이 스테이징git add b.txt
마지막에.
「」는,git status
되면 이쯤에서, 이쯤에서.
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: b.txt
부터의 경우는, 「우선」, 「우선」을 합니다.git checkout
됩니다
$ git checkout HEAD -- b.txt
$ git status
On branch master
nothing to commit, working directory clean
신신면면면면면면면면면면면을 하면git reset
을 사용하다
$ git reset HEAD -- b.txt
Unstaged changes after reset:
M b.txt
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: b.txt
no changes added to commit (use "git add" and/or "git commit -a")
-이 스테이징된 - " " " 입니다.git reset
없는 변경으로 단, 단계적인 변경은 단계적인 변경으로 이루어집니다.git checkout
는 변경을 완전히 덮어씁니다.
ID를 는 SHA ID입니다.떻게게 하면 ?? ???git checkout <sha hash id> <file name>
나에겐 이것만 통했어
git checkout -p filename
아직 커밋을 푸시 또는 공유하지 않은 경우:
git diff --stat HEAD^...HEAD | \
fgrep filename_snippet_to_revert | cut -d' ' -f2 | xargs git checkout HEAD^ --
git commit -a --amend
git restore 파일
다음 중복 답변을 참조하십시오(2020 업데이트까지 스크롤 다운하십시오). https://stackoverflow.com/a/31281748/12763497
이미 커밋된 경우 파일의 변경을 되돌리고 다시 커밋한 후 마지막 커밋으로 새 커밋을 스쿼시할 수 있습니다.
git checkout a3156ae4913a0226caa62d8627e0e9589b33d04c -p */SearchMaster.jsp
분석: a3156ae4913a0226caa62d8627e0e9589b33d04c = 이것은 커밋의 해시 값입니다.그것은 내 개인 지사에 있다(사 아님)에 있다.
-p 플래그가 경로입니다.
*/SearchMaster.jsp는 파일 이름입니다.
언급URL : https://stackoverflow.com/questions/692246/undo-working-copy-modifications-of-one-file-in-git
'programing' 카테고리의 다른 글
UITableViewCell은 흰색 배경을 표시하며 iOS7에서는 수정할 수 없습니다. (0) | 2023.04.21 |
---|---|
WPF UI 렌더링 속도를 향상시키는 방법 (0) | 2023.04.16 |
크로스 조인이나 데카르트 제품을 엑셀로 하는 방법이 있나요? (0) | 2023.04.16 |
문자열의 큰따옴표 이스케이프 (0) | 2023.04.16 |
Git으로 CRLF(캐리지 리턴, 라인 피드)를 처리하는 전략은 무엇입니까? (0) | 2023.04.16 |