Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Visual Studio 2019 | Visual Studio 2022
Git 리포지토리에서 변경 내용을 실행 취소하려면 먼저 실행 취소할 변경 유형을 결정합니다. 예를 들어, 다음을 수행하고자 할 수도 있습니다.
- 파일을 마지막으로 커밋된 버전으로 되돌려 커밋되지 않은 파일 변경 내용을 취소합니다. 파일을 커밋된 버전으로 되돌릴 수도 있습니다.
- 브랜치를 이전 커밋으로 재설정하여 이전 상태로 되돌립니다.
- 변경 내용을 되돌리는 새 커밋을 만들어 공유 커밋으로 변경한 내용을 실행 취소합니다. 이 방법은 기존 커밋 기록을 다시 작성하지 않으므로 푸시되고 다른 사용자가 사용 중인 커밋의 변경 내용을 되돌리는 데 적합합니다.
- 마지막 커밋을 수정하여 콘텐츠 또는 메시지를 수정합니다. 자세한 내용은 마지막 커밋을 업데이트하는 방법을 참조하세요.
- 수정을 포함하는 새 커밋을 만들어 이전 커밋 에 도입된 문제를 해결합니다. 자세한 내용은 커밋을 만드는 방법을 참조하세요.
이 문서에서는 다음 방법을 알아봅니다.
- 파일에 대한 커밋되지 않은 변경 내용 취소
- 브랜치를 이전 상태로 되돌리기
- 공유 커밋에서 변경한 내용을 실행 취소합니다.
필수 조건
| 카테고리 |
요구 사항 |
|
프로젝트 액세스 |
프로젝트멤버입니다. |
|
권한 |
- 프라이빗 프로젝트에서 코드 보기: 최소 기본 액세스. - 프라이빗 프로젝트의 코드 복제 또는 기여: 기여자 보안 그룹 또는 프로젝트의 해당 사용 권한의 구성원입니다. - 분기 또는 리포지토리 사용 권한 설정: 분기 또는 리포지토리에 대한 사용 권한 사용 권한 관리 - 기본 분기 변경: 리포지토리에 대한 정책 편집 권한 설정. - 리포지토리 가져오기: 프로젝트 관리자 보안 그룹의 구성원이거나 Git 프로젝트 수준의 리포지토리 생성 권한이 허용으로 설정된 경우입니다. 자세한 내용은 Git 리포지토리 권한 설정을 참조 하세요. |
|
서비스 |
리포지토리가 활성화되었습니다. |
|
도구 |
선택 사항.
az repos 명령어를 사용하세요: Azure DevOps CLI. |
참고
퍼블릭 프로젝트에서 이해 관계자 액세스 권한이 있는 사용자는 코드 보기, 복제 및 기여를 포함하여 Azure Repos에 대한 모든 권한을 갖습니다.
| 카테고리 |
요구 사항 |
|
프로젝트 액세스 |
프로젝트멤버입니다. |
|
권한 |
- 코드 보기: 최소 베이직 접근 권한. - 코드 복제 또는 기여: 기여자 보안 그룹의 구성원이거나 프로젝트에서 해당 권한을 가진 경우. |
|
서비스 |
리포지토리가 활성화되었습니다. |
파일에 대한 커밋되지 않은 변경 내용 취소
파일을 변경했지만 해당 변경 내용을 커밋하지 않은 경우 Git 체크 아웃 을 사용하여 변경 내용을 신속하게 취소하고 파일을 마지막으로 커밋된 버전으로 되돌릴 수 있습니다.
Git은 checkout 커밋 ID 지정할 때 파일을 커밋된 버전으로 되돌릴 수도 있습니다.
경고
Git checkout 에서 삭제할 변경 내용을 다시 적용할 가능성이 있는 경우 해당 변경 내용을 대신 숨겨 두는 것이 좋습니다.
Visual Studio 2022는 Git 메뉴, Git 변경 내용 및 솔루션 탐색기 상황에 맞는 메뉴를 사용하여 Git 버전 제어 환경을 제공합니다. Visual Studio 2019 버전 16.8은 팀 탐색기 Git 사용자 인터페이스도 제공합니다. 자세한 내용은 Visual Studio 2019 - 팀 탐색기 탭을 참조하세요.
Visual Studio는 파일을 마지막으로 커밋된 버전으로 되돌려 커밋되지 않은 변경 내용을 파일에 삭제하도록 지원합니다.
Git 변경 내용 창에서 삭제하려는 변경 내용으로 파일을 식별합니다. 파일이 스테이징된 변경 사항 섹션에 있는 경우 마우스 오른쪽 단추로 클릭하고 스테이징 해제를 선택합니다. 스테이징되지 않은 파일이 변경 내용 섹션에 표시됩니다.
파일이 변경 내용 섹션에 있는 경우 파일을 마우스 오른쪽 단추로 클릭하고 변경 내용 취소를 선택하여 마지막 커밋 이후 파일의 모든 변경 내용을 취소합니다.
Visual Studio는 파일을 마지막으로 커밋된 버전으로 되돌려 커밋되지 않은 변경 내용을 파일에 삭제하도록 지원합니다.
팀 탐색기의 변경 내용 보기에서 삭제하려는 변경 내용으로 파일을 식별합니다. 파일이 스테이징된 변경 사항 섹션에 있는 경우 마우스 오른쪽 단추로 클릭하고 스테이징 해제를 선택합니다. 스테이징되지 않은 파일이 변경 내용 섹션에 표시됨
파일이 변경 내용 섹션에 있는 경우 파일을 마우스 오른쪽 단추로 클릭하고 변경 내용 취소를 선택하여 마지막 커밋 이후 파일의 모든 변경 내용을 취소합니다.
Git checkout 명령을 사용하여 파일을 마지막으로 커밋된 버전으로 되돌려 파일에 대한 커밋되지 않은 변경 내용을 취소할 수 있습니다.
git checkout <file>
예를 들어 git checkout README.md 는 README.md 파일의 커밋되지 않은 변경 사항을 폐기합니다.
또한 Git checkout 은 커밋을 고유하게 식별하는 부분 또는 전체 커밋 ID 지정할 때 파일을 이전에 커밋된 버전으로 되돌리는 것을 지원합니다.
git checkout <commit ID> <file>
커밋 ID 찾는 방법에 대한 자세한 내용은 커밋 ID 찾기를 참조하세요.
참고
Git checkout 명령을 사용하여 파일을 되돌리는 것은 브랜치 간에 전환하는 일반적인 용도와 다릅니다. 명령 출력은 checkout 분기 간 전환 또는 파일 업데이트 여부를 알려주며, 수행하려는 파일이 명확하지 않은 경우 경고합니다.
브랜치를 이전 상태로 되돌리기
Git 재설정 을 사용하여 분기를 이전 커밋으로 다시 설정하여 분기를 이전 상태로 되돌릴 수 있습니다. Git reset 은 모든 분기 폴더의 모든 파일에 영향을 줍니다.
Git reset 에는 몇 가지 옵션이 있습니다. 기본 옵션은 분기를 이전 커밋으로 되돌리지만 모든 후속 변경 내용을 커밋되지 않은 변경 내용으로 유지하는 것입니다. 또 다른 옵션은 해당 커밋 이후 모든 분기 파일에 대한 모든 변경 내용을 삭제하여 분기를 이전 커밋으로 되돌리는 것입니다.
경고
마지막 커밋이 푸시되고 다른 사용자와 공유된 경우 마지막 커밋 전에 분기를 커밋으로 다시 설정하지 마세요. 이렇게 하면 로컬 분기 기록이 더 이상 원격 분기 기록과 일치하지 않습니다. 공유 분기의 경우, 공유 커밋에 의해 변경된 내용 실행 취소를 참조하세요.
메뉴 모음에서 >을 선택하여 현재 브랜치의 기록 탭을 엽니다.
현재 브랜치의 히스토리 탭에서 다시 설정할 커밋을 마우스 오른쪽 버튼으로 클릭한 다음, 변경 사항 삭제 후 리셋(--하드)>를 선택하여 브랜치를 선택한 커밋으로 되돌리고 해당 커밋 이후 모든 파일에 대한 모든 변경 사항을 삭제합니다. 또는 변경 내용 유지(--혼합)> 분기를 선택한 커밋으로 다시 설정하고 모든 후속 변경 내용을 스테이징되지 않은 변경 내용으로 유지합니다.
팀 탐색기의 변경 내용 보기에서 작업 > 보기 기록을 선택하여 현재 브랜치의 기록 탭을 엽니다.
현재 브랜치의 히스토리 탭에서 다시 설정할 커밋을 마우스 오른쪽 버튼으로 클릭한 다음, 변경 사항 삭제 후 리셋(--하드)>를 선택하여 브랜치를 선택한 커밋으로 되돌리고 해당 커밋 이후 모든 파일에 대한 모든 변경 사항을 삭제합니다. 또는 변경 내용 유지(--혼합)> 분기를 선택한 커밋으로 다시 설정하고 모든 후속 변경 내용을 스테이징되지 않은 변경 내용으로 유지합니다.
Git reset 을 사용하여 이전 커밋에서 분기를 해당 상태로 되돌릴 수 있습니다. Git reset 명령은 다양한 플래그와 함께 사용할 수 있습니다.
- 플래그
--hard은 지정된 커밋으로 브랜치를 리셋하고 모든 후속 변경 사항을 버리도록 Git에 지시합니다. 이 옵션을 사용하면 작업이 손실될 수 있으므로 이 옵션에 주의해야 합니다.
- 플래그는
--mixed 지정된 커밋으로 분기를 다시 설정하지만 모든 후속 변경 내용을 스테이징되지 않은 변경 내용으로 유지하도록 Git에 지시합니다. 이 옵션이 기본값입니다.
-
--soft 플래그는 지정된 커밋으로 분기를 리셋하도록 Git에 지시하지만, 모든 후속 변경 사항을 이전 상태에 따라 스테이징된 것과 스테이징되지 않은 것으로 유지하라고 지시합니다.
Git reset 의 일반적인 사용은 마지막 커밋 이후 모든 파일에서 커밋되지 않은 모든 변경 내용을 취소하는 옵션입니다 --hard .
git reset --hard
마지막 커밋과 다른 커밋으로 분기를 하드 다시 설정하려면 커밋을 고유하게 식별하는 커밋 ID 또는 부분 커밋 ID 지정합니다.
git reset --hard <commit ID>
커밋 ID 찾는 방법에 대한 자세한 내용은 커밋 ID 찾기를 참조하세요.
공유 커밋에서 변경한 내용을 실행 취소합니다.
Git 되돌리 기를 사용하여 해당 변경 내용을 되돌리는 새 커밋을 만들어 커밋으로 변경한 내용을 취소할 수 있습니다. Git은 revert 원래 커밋을 삭제하지 않습니다. 이 방법은 Git revert 이 이전 커밋 기록을 변경하지 않으므로 공유 커밋의 변경 내용을 실행 취소하는 데 적합하므로 로컬 및 원격 분기 기록이 계속 일치합니다.
메뉴 모음에서 >을 선택하여 현재 브랜치의 기록 탭을 엽니다.
현재 분기의 기록 탭에서 되돌리려는 커밋을 마우스 오른쪽 단추로 클릭하고 되돌리기를 선택하여 선택한 커밋의 변경 내용을 취소하는 새 커밋을 만듭니다.
팀 탐색기의 변경 내용 보기에서 작업 > 보기 기록을 선택하여 현재 브랜치의 기록 탭을 엽니다.
현재 분기의 기록 탭에서 되돌리려는 커밋을 마우스 오른쪽 단추로 클릭하고 되돌리기를 선택하여 선택한 커밋의 변경 내용을 취소하는 새 커밋을 만듭니다.
Git revert 명령을 사용하여 커밋에 의해 변경된 내용을 실행 취소하고 반전된 변경 내용으로 새 커밋을 만들 수 있습니다. 변경 내용이 반전된 커밋은 Git 기록에 남아 있습니다.
git revert <commit ID>
되돌리기 작업이 성공하면 Git에서 새 커밋에 대한 커밋 메시지 입력하라는 메시지가 표시되는 편집기 창이 열립니다.
되돌리기 작업 중에 충돌이 있는 경우 Git에서 알려 줍니다. 충돌을 해결한 다음 git revert --continue을 실행하거나, 되돌리기 작업을 실행 취소하려면 git revert --abort을 실행할 수 있습니다.
커밋 ID 찾기
Git log 명령을 사용하여 커밋의 ID를 가져올 수 있습니다. 플래그는 --oneline 출력을 축약합니다.
git log --oneline <branch>
Git log 명령은 지정된 분기의 끝에 있는 커밋(지정되지 않은 경우 현재 분기)부터 시작하여 가장 최근의 커밋을 먼저 나열한 다음 상위 커밋을 통해 뒤로 반복합니다. 약식 출력의 각 커밋 ID는 커밋을 고유하게 식별하는 부분 SHA-1 체크섬입니다. 예를 들어 다음을 git log --oneline main 출력할 수 있습니다.
e745d06 (HEAD -> main) Add a test initialization class
31da50b Add network switch test
0c14391 Add readme file
32e3946 Add project files.
다음 단계
관련된 문서