sourcetip

변경 내용을 커밋의 파일로 되돌리기

fileupload 2023. 7. 2. 20:54
반응형

변경 내용을 커밋의 파일로 되돌리기

특정 커밋에서 변경한 내용만 지정된 파일로 되돌리려고 합니다.

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

(smtlaisszfairegit-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

이렇게 하면 이미 커밋에 있는 파일이 제거되고 다시 반환됩니다.

위의 단계는 커밋이 수행된 분기에서 수행해야 합니다.

다음 절차를 수행할 수 있습니다.

  1. git revert -n <*commit*>(-n모든 변경 사항을 되돌리지만 커밋하지 않음)
  2. git add <*filename*> &)(복귀 & 커밋)
  3. git commit -m 'reverted message'를 위한 메시지 귀를위한메시지추가복▁for▁(추▁a가(▁message지▁rever)
  4. 다른 파일 변경 내용을 삭제한 후에는 복구 전에 변경한 내용으로 파일이 업데이트됩니다.

언급URL : https://stackoverflow.com/questions/2620775/revert-changes-to-a-file-in-a-commit

반응형