반응형
Git : 이전 커밋에서 파일을 체크 아웃하고 HEAD로 수정
최근에 오류가있는 지점의 HEAD에 파일을 커밋했습니다. 다음 작업을 수행해야합니다.
- HEAD 이전의 한 커밋에서 해당 파일을 가져옵니다.
- 해당 파일을 HEAD에 다시 커밋
그것에 대해 가장 좋은 방법은 무엇입니까?
실제로 직접 말한 것입니다.
먼저 이전에 한 커밋에서 파일을 다시 가져옵니다.
$> git checkout HEAD~1 path/to/file.ext
그런 다음 커밋하십시오.
$> git commit -a -m 'Retrieved file from older revision'
마지막 커밋에있는 해당 파일의 변경 사항 만 사용할 수 있습니다 git-revert.
$> git revert HEAD
나는 이것을 별도의 커밋으로 만드는 것이 더 낫다고 생각합니다. 왜냐하면 그것은 당신이 되 돌린 것과 그 이유를 정확히 알려주기 때문입니다. 그러나 --amend스위치를 사용하여 이전 커밋으로 스쿼시 할 수 있습니다 git-commit.
이 시나리오에서는주의하십시오.
Commit hash - File modified
aaaaaaa index.php
bbbbbbb test.php
ccccccc index.php
Git checkout HEAD ~ 1 (또는 HEAD ^) index.php index.php 파일을 이전 HEAD 해시 (bbbbbbb)로 체크 아웃하려고하지만 이것은 실제 이전 커밋 해시 파일이 아니며 ccccccc입니다. 이전 HEAD 해시에서 index.php는 마지막 변경이 해시 ccccccc에서 이루어 졌기 때문에 여전히 변경되지 않았습니다.
일부 파일을 파일에 영향을 준 이전 커밋 해시로 되돌리려면 다음을 사용하십시오.
git log -n 2 --pretty=format:%h path/to/file.ext
첫 번째 해시를 무시하고 두 번째 해시를 취한 다음 :
git checkout <second_hash> path/to/file.ext
git commit -m 'Revert this file to real previous commit'
반응형
'IT TIP' 카테고리의 다른 글
| Angular2 : 자식 구성 요소 액세스 부모 클래스 변수 / 함수 (0) | 2020.11.24 |
|---|---|
| 사용자 인터페이스없이 Web API의 토큰 기반 인증 (0) | 2020.11.24 |
| 정적 const float가 허용되지 않는 이유는 무엇입니까? (0) | 2020.11.23 |
| 이니셜 라이저 오류의 예외 (0) | 2020.11.23 |
| Visual Studio 2010은 "다시 작성"을 수동으로 선택하지 않는 한 변경된 코드를 다시 작성하지 않습니다. (0) | 2020.11.23 |