>source

지역 BranchA 에있는 동안 나는 계속 따라 갔다 :

  1. 와이즈 비츠 수정  (실수로)
  2. FileA  
  3. git add FileA

그래, git commit -m "Modified FileA"  로컬 지점 FileA 에서 로컬 커밋에 있습니다 (원격으로 푸시되지 않음).  (또한 원격으로 밀지 않았습니다).

변경 사항을 FileA로 되돌리려면 어떻게합니까?

업데이트 및 해결 방법

저에게 더 간단하다는 것을 깨달았을 때 git 대신 SourceTree에서 FileA 변경을 취소했습니다.

이렇게하려면, 커밋 된 파일 FileA의 "Source Select"에서 r-c>"Log Select ...">이전 커밋 (이전의 커밋)>r-c를 선택하고 "Remit to this commit"을 선택하십시오. 그 일을했지만 모두 감사합니다

BranchA

  • 답변 # 1

    해당 파일에서 변경 사항을 취소하고 커밋은 변경하지 않은 상태로 유지하려면 다음과 같이하십시오.

    1) fileA를 이전 상태로 되돌리기

    git checkout HEAD^ -- path/to/fileA
    
    

    2) 마지막 커밋에서 BranchA에서 수행 한 것을 포함

    git commit --amend
    
    

    (그리고 아직 푸시되지 않았으므로 다음에 강제로 푸시 할 필요가 없습니다.)

  • 답변 # 2

    먼저 분기를 이전 커밋으로 재설정합니다 :

    git reset @^ --mixed
    
    

    그런 다음 checkout 를 사용할 수 있습니다  특정 파일을 이전 상태로 재설정하는 방법 :

    git checkout -- files...
    
    

    변경이 완료되면 다시 커밋 할 수 있습니다 :

    git add files...
    git commit -m "message"
    
    

  • 답변 # 3

    git reset HEAD~1 를 사용하여 현재 분기 색인을 이전 커밋으로 재설정 할 수 있습니다 . --hard 추가  작업 디렉토리를 재설정하거나 변경 사항을 수정하고 다시 커밋하려면 해제하십시오.

    그 이후로 변경 한 다른 사항이 있으면 git rebase 를 사용하십시오.  문제가 발생한 커밋을 먼저 스택의 맨 위로 이동합니다.

  • 답변 # 4

    다른 방법 : (커밋에 파일 만 변경되었다고 가정하고 버리고 싶습니다) :

    지사 A에 있음

    git rebase -i HEAD~2
    
    

    이것은 역사적으로 asc로 정렬 된 두 개의 커밋 목록을 제공합니다. 마지막은 당신이 바꾸고 싶은 것입니다. 따라서 커밋을 삭제하고 싶습니다. pick 대신 두 번째 커밋으로 커서를 이동하십시오.   drop 유형 또는 그냥 d .

    변경 사항 저장 (편집자에 따라 CTRL 일 수 있음) + X  + 와이즈 비즈 + SHIFT   Y 를 위해  또는 nano   :wq 를 위해 그게 다야.

    vim

  • 이전 search - 각 줄마다 여러 줄의 텍스트 파일을 새 줄로 출력
  • 다음 python - Django-seed에서 mobile_number 생성시 오류