변경 내용을 커밋의 파일로 되돌리기
특정 커밋에서 변경한 내용만 지정된 파일로 되돌리려고 합니다.
git revert 명령을 사용할 수 있습니까?
다른 간단한 방법은 없습니까?
제가 본 가장 깨끗한 방법은 여기에 설명되어 있습니다.
git show some_commit_sha1 -- some_file.c | git apply -R
VonC의 응답과 유사하지만 사용합니다.git show
그리고.git apply
.
커밋 기록을 변경해도 괜찮다고 가정하면 이전 커밋에서 단일 파일의 변경 내용을 되돌리는 워크플로우는 다음과 같습니다.
예를 들어, 1개 파일의 변경 내용을 되돌리려고 합니다.badfile.txt
) 커밋 중인aaa222
:
aaa333 Good commit
aaa222 Problem commit containing badfile.txt
aaa111 Base commit
기본 커밋을 기반으로 문제 커밋을 수정하고 계속합니다.
대화형 기본 재배치 시작:
git rebase -i aaa111
변경하여 편집기에서 문제 커밋을 편집할 수 있도록 표시pick
로.e
(편집용):
e aaa222
pick aaa333
잘못된 파일로 변경 내용 되돌리기:
git show -- badfile.txt | git apply -R
변경 사항을 추가하고 커밋을 수정합니다.
git add badfile.txt
git commit --amend
기본 재배치를 완료합니다.
git rebase --continue
훨씬 단순합니다.
git reset HEAD^ path/to/file/to/revert
그리고나서
git commit --amend
그리고 나서.
git push -f
파일이 사라졌고 해시, 메시지 등을 커밋합니다.
git revert
커밋 내의 모든 파일 내용에 대한 것입니다.
단일 파일의 경우 다음과 같이 스크립팅할 수 있습니다.
#!/bin/bash
function output_help {
echo "usage: git-revert-single-file <sha1> <file>"
}
sha1=$1
file=$2
if [[ $sha1 ]]; then
git diff $sha1..$sha1^ -- $file | patch -p1
else
output_help
fi
(smtlaisszfaire의 git-shell-scripts 유틸리티에서)
참고:
현재 수정 내용을 아직 커밋하지 않은 경우 다른 방법이 여기에 설명되어 있습니다.
git checkout -- filename
git checkout
에는 HEAD에서 파일을 수정하고 변경 내용을 덮어쓰는 몇 가지 옵션이 있습니다.
떨어뜨렸어요.카프리카는 논평에서 다음과 같이 언급합니다.
Git에 별칭을 추가하여 다음 작업을 수행할 수 있습니다.
git revert-file <hash> <file-loc>
그리고 그 특정 파일을 되돌리도록 합니다.
이 요점을 참조하십시오.
[alias]
revert-file = !sh /home/some-user/git-file-revert.sh
마지막으로 커밋한 파일의 변경 내용을 재설정하려면 이 작업을 주로 사용합니다.저는 이것이 가장 간단한 해결책이라고 생각합니다.
파일이 준비 영역에 추가됩니다.
git checkout <prev_commit_hash> -- <path_to_your_file>
도움이 되길 바랍니다 :)
저는 단순히 그것을 사용할 것입니다.--no-commit
에 대한 선택권.git-revert
마지막으로 커밋하기 전에 인덱스에서 되돌리지 않을 파일을 제거합니다.다음은 두 번째 최근 커밋에서 변경 사항만 foo.c로 쉽게 되돌리는 방법을 보여주는 예입니다.
$ git revert --no-commit HEAD~1
$ git reset HEAD
$ git add foo.c
$ git commit -m "Reverting recent change to foo.c"
$ git reset --hard HEAD
첫번째git-reset
모든 파일을 "분할"하여 원하는 파일 하나만 다시 추가할 수 있습니다.결승전git-reset --hard
보관하지 않을 나머지 파일 되돌리기를 제거합니다.
git reset HEAD^ path/to/file/to/revert/in/commit
위의 명령은 파일을 커밋에서 제거하지만 다음에 반영됩니다.git status
.
git checkout path/to/file/to/revert/in/commit
위의 명령을 실행하면 변경 내용이 반환됩니다(결과적으로 HEAD와 동일한 파일이 생성됨).
git commit
(합격)--amend
커밋을 수정합니다.)
git push
이렇게 하면 이미 커밋에 있는 파일이 제거되고 다시 반환됩니다.
위의 단계는 커밋이 수행된 분기에서 수행해야 합니다.
다음 절차를 수행할 수 있습니다.
git revert -n <*commit*>
(-n
모든 변경 사항을 되돌리지만 커밋하지 않음)git add <*filename*>
&)(복귀 & 커밋)git commit -m 'reverted message'
를 위한 메시지 귀를위한메시지추가복▁for▁(추▁a가(▁message지▁rever)- 다른 파일 변경 내용을 삭제한 후에는 복구 전에 변경한 내용으로 파일이 업데이트됩니다.
언급URL : https://stackoverflow.com/questions/2620775/revert-changes-to-a-file-in-a-commit
'sourcetip' 카테고리의 다른 글
각진 배열에 항목 추가 4 (0) | 2023.07.02 |
---|---|
Vuex 모듈, 돌연변이 및 액션에 ES6 클래스를 사용해도 괜찮습니까? (0) | 2023.07.02 |
SQL Server에서 기본 키가 필요합니까? (0) | 2023.07.02 |
파이썬에서 코드 한 줄에 n자 문자열을 만들려면 어떻게 해야 합니까? (0) | 2023.06.27 |
Firebase: 키에 대한 고유한 숫자 ID를 생성하는 방법은 무엇입니까? (0) | 2023.06.27 |