development

단일 파일의 하드 리셋

big-blog 2020. 9. 28. 09:30
반응형

단일 파일의 하드 리셋


현재 작업 디렉토리에 3 개의 수정 된 파일이 있습니다. 그러나 그중 하나를 HEAD 상태로 재설정하고 싶습니다.

SVN에서는 svn revert <filename>( svn update <filename>필요한 경우 뒤에 ) 사용하지만 git에서는 git reset --hard. 그러나이 명령은 단일 파일에서 작동 할 수 없습니다.

git에 단일 파일 변경 사항을 버리고 새로운 HEAD 사본으로 덮어 쓰는 방법이 있습니까?


다음 명령을 사용할 수 있습니다.

git checkout HEAD -- my-file.txt

... 이것은 my-file.txtHEAD 의 작업 복사본 과 인덱스의 상태를 모두 업데이트합니다 .

--기본적으로 의미 : 이 시점 이후의 모든 인수를 파일 이름으로 취급합니다 . 이 답변에 대한 자세한 내용 . 이것을 지적한 VonC 에게 감사드립니다 .


머리로 재설정 :

단일 파일을 HEAD로 하드 재설정하려면 :

git checkout @ -- myfile.ext

@약자입니다 HEAD. 이전 버전의 git은 짧은 형식을 지원하지 않을 수 있습니다.

색인으로 재설정 :

인덱스가 비어 있지 않다고 가정하고 단일 파일을 인덱스로 하드 리셋하려면 , 그렇지 않으면 HEAD에 :

git checkout -- myfile.ext

요점은 안전을 위해 특별히 인덱스 로만 재설정하는 것을 의미하지 않는 한 명령을 생략 @하거나 HEAD명령에서 제외 하고 싶지 않다는 것입니다.


업스트림 / 마스터로 되돌리려면 다음을 수행하십시오.

git checkout upstream/master -- myfile.txt


단일 파일을 재설정하려면 아래 명령을 사용할 수 있습니다.

git checkout HEAD -- path_to_file/file_name

path_to_file/filename아래 명령 으로 가져올 모든 변경된 파일 나열

git status

다음 명령을 사용할 수 있습니다.

git reset -- my-file.txt

my-file.txt추가되면 작업 복사본이 모두 업데이트 됩니다.


HEAD에 대한 참조는 필요하지 않습니다.

git checkout -- file.js 충분하다


다음 명령을 사용할 수 있습니다.

git checkout filename

동일한 파일 이름을 가진 브랜치가있는 경우 다음 명령을 사용해야합니다.

git checkout -- filename

특히 git에 익숙하지 않은 경우, 간단하고 쉬운 실습 방법으로 뜨거운 물에서 빠져 나올 수 있습니다.

  1. 파일 로그보기

    git log myFile.js

    commit 1023057173029091u23f01w276931f7f42595f84f 작성자 : kmiklas 날짜 : 8 월 7 일 화요일 09:29:34 2018-0400

    JIRA-12345-새로운 아키텍처로 리팩터링합니다.

  2. 파일 해시 참고 :

    1023057173029091u23f01w276931f7f42595f84f

  3. 해시를 사용하여 파일을 표시합니다. 원하는 내용인지 확인하세요.

    git show 1023057173029091u23f01w276931f7f42595f84f : ./ myFile.js

  4. 파일을 로컬 복사본으로 리디렉션

    git show 1023057173029091u23f01w276931f7f42595f84f : ./ myFile.js> myFile.07aug2018.js

  5. 현재 파일을 백업하십시오.

    cp myFile.js myFile.bak.js

  6. 좋아하는 텍스트 편집기에서 두 파일을 모두 엽니 다.

    vim myFile.js
    vim myFile.07aug2018.js

  7. myFile.07aug2018.js에서 myFile.js로 붙여 넣기 코드를 복사하여 저장합니다.

  8. myFile.js 커밋 및 푸시

  9. Again view the log, and confirm that your file is properly in place.

  10. Tell your clients to pull the latest, happily watch it work with the old version in place.

Not the sexiest, or most git-centric solution, and definitely a "manual" reset/reversion, but it works. It requires minimal knowledge of git, and doesn't disturb the commit history.

참고URL : https://stackoverflow.com/questions/7147270/hard-reset-of-a-single-file

반응형