IT TIP

Git : 이전 커밋에서 파일을 체크 아웃하고 HEAD로 수정

itqueen 2020. 11. 24. 20:42
반응형

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'

참고 URL : https://stackoverflow.com/questions/900560/git-checking-out-a-file-from-a-previous-commit-and-amending-it-to-head

반응형