Git에서 SVN의 되돌리기 동작을 얻는 방법

Git에서 SVN의 되돌리기 동작을 얻는 방법

알아요, 알아요. 하지만 적어도 Visual Studio 2015에서는 git revert작동하지 않거나 TortoiseGit에서는 작동하지 않을 수도 있다는 것을 방금 배웠습니다 . svn revert나는 설명할 것이다:

저는 Git을 처음 접하는 VS2015를 처음 접했습니다. VS2015에 Git 통합 기능이 있다는 사실을 발견하고 바로 사용해 보았습니다. 그러나 저는 여러 파일을 작업 중이었고 그 중 하나만 커밋할 준비가 되어 있었습니다. 불행하게도 팀 탐색기 창에 적용한 필터는 커밋된 파일에 적용되지 않았습니다(이것이 버튼 제목이 "모두 커밋"인 이유인 것 같습니다). 대신 모든 "더러운" 파일을 커밋했습니다. 이런!

내 저장소의 로그를 보기 위해 TortoiseGit에 의존하여 가장 최근(로컬) 커밋을 선택하고 "이 커밋에 의한 변경 사항 되돌리기"를 통해 되돌렸습니다. 나는 이 작업이 작업 중이었던 파일을 SVN 되돌리기가 수행하는 것과 같이 커밋하기 전의 "더러운" 상태로 되돌릴 것이라고 예상했지만 놀랍게도 이 작업은 내 로컬 파일을 다음으로 되돌렸습니다. 이전레포버전은 내가 커밋하기 전의 상태가 아닙니다.

물론 원래 커밋했던 "모든 파일" 개정판에 모두 들어 있었기 때문에 작업물을 복구할 수 있었습니다. 방금 각 파일을 올바른 디렉토리로 복사하는 작업을 시작했습니다. 그런데 내가 여기서 무엇을 놓치고 있는 걸까요? 되돌리기 대신 사용해야 하는 Git 기능이 있나요?

답변1

Git에서는 전체 커밋을 제거할 수 있습니다. 푸시되지 않은 커밋에 대해서만 이 작업을 수행하는 것이 좋습니다. Git의 전체 "분산" 부분이 이를 가능하게 합니다. SVN을 사용하면 변경 사항을 다른 사람이 즉시 사용할 수 있습니다. Git에서는 푸시된 후에만 사용할 수 있습니다(Visual Studio의 "동기화").

따라서 커밋을 되돌리는 대신(잘못된 변경 사항이 저장소에 남아 예상치 못한 부작용이 발생할 수 있음을 의미함) git reset --mixed HEAD~1. 즉, 작업 디렉터리는 그대로 유지되지만 마지막 커밋은 제거됩니다. 이는 Git이 모든 파일을 다시 수정된 것으로 표시한다는 의미입니다.

Git에서 되돌리면 되돌린 커밋의 "역" 커밋이 생성되어 모든 변경 사항이 취소됩니다.

그런 다음 단일 파일만 커밋하려면 먼저 git statusGit에 원하지 않는 변경 사항이 준비되어 있지 않은지 확인하세요. 그런 다음 git add path/to/file.txt해당 파일을 준비하는 데만 사용합니다. 그런 다음 을 실행하고 git commit적절한 커밋 메시지를 사용하면 작업이 완료됩니다.

실행 git commit하고 텍스트 편집기가 팝업되면 파일에는 커밋될 변경 사항 목록도 포함됩니다. 이 목록을 주의 깊게 검사하여 원하는 것만 커밋하는지 확인하세요.

또한 Git을 적극적으로 사용하기 위해 Visual Studio를 사용하지 마세요. Git 작업에 레거시 TFS 용어를 적용하려고 시도하지만 동일하지 않습니다. 대신 콘솔에서 Git을 배워보세요. Visual Studio에는 훌륭한 diff 보기와 같은 읽기 전용 작업을 위한 몇 가지 유용한 기능이 있습니다.

관련 정보