itsource

Visual Studio에서 푸시되지 않은 나가는 커밋을 제거하는 방법은 무엇입니까?

mycopycode 2023. 6. 21. 22:34
반응형

Visual Studio에서 푸시되지 않은 나가는 커밋을 제거하는 방법은 무엇입니까?

실수로 Visual Studio 2017의 새 분기에서 단계적으로 변경된 내용을 로컬 저장소로 푸시했습니다.원격 리포지토리로 푸시되지 않았습니다.저는 그것을 없애고 싶지만 이것을 할 방법을 찾을 수 없습니다.저는 로컬 마스터 지점에서 새 지점으로 재배치했습니다.그런 다음 새 지점을 삭제했습니다.그러나 발신 커밋에는 여전히 표시됩니다.삭제하거나 되돌리는 방법은 무엇입니까?

enter image description here

분기 타일에서 팀 탐색기의 기록 탭을 엽니다(분기를 마우스 오른쪽 단추로 클릭).그런 다음 기록에서 누르고 싶지 않은 커밋 앞에 있는 커밋을 마우스 오른쪽 단추로 클릭하고 재설정을 선택합니다.그러면 지점이 해당 커밋으로 다시 이동되고 추가 커밋이 제거됩니다.따라서 지정된 커밋 전에 재설정하려면 상위 항목을 선택해야 합니다.

enter image description here

변경사항을 수행할 작업에 따라 하드를 선택하면 로컬에서 변경사항이 제거됩니다.또는 커밋을 실행 취소하지만 취소된 커밋의 변경사항과 함께 작업 디렉토리를 남기는 소프트를 선택합니다.

저는 이 문제를 해결하는 데 도움이 되는 단 하나의 좋은 답변도 찾을 수 없었습니다.

을 실로변커밋지한이점름이의경을수,이라고 가정해 master 것이되었습니다.

  1. 분기로 이동
  2. 다음 이외의 분기를 선택하거나 만듭니다.master
  3. 의 로컬master
  4. 에서 remotes/origin

TL;DR:

사용하다git reset --soft HEAD~ .sln 폴더의 cmd에서


나는 오늘 그것을 마주하고 있었고 그것에 압도되었습니다.VSCode에, 의 큰 형인 런그것제는반면하, 의큰형그것안을.Visual Studio안 합니다.

대부분의 답변은 도움이 되지 않았습니다. 이전에 했던 커밋이 더 많으면 모든 커밋을 잃는 것이 좌절감을 느끼게 됩니다. 만약 게가면, 약에만.VSCode안 됩니다. 0.5초면 됩니다. 복잡해서는 안 됩니다.

제시하우잉의 대답만이 가장 간단한 해결책에 가까웠습니다.


원치 않는 커밋이 마지막으로 발생한 커밋이라고 가정하면 다음과 같이 해결할 수 있습니다.

에 가다Team Explorer->Sync거기서 모든 커밋을 볼 수 있습니다..Actions 및 드다운및Open Command Prompt

undesired-commit-solved example

cmd 창에 메시지가 표시되면 다음과 같이 기록합니다.git reset --soft HEAD~원하지 않는 커밋이 여러 개 있는 경우 다음에 금액을 추가합니다.~ (계속),git reset --soft HEAD~5)


하지 않을 )git구어 용법을 확인합니다).

도움이 되길 바라며, 다음 버전에서는 VS 팀에서 기본 제공하는 기능을 추가할 것입니다.

모든 나가는 커밋을 취소하거나 특정 커밋을 취소할 수 있는 두 가지 옵션이 있습니다.

1 - 보내는 모든 커밋을 취소합니다.

나가는 모든 커밋을 취소하려면 예를 들어 원격 분기에서 마스터라는 로컬 분기가 있는 경우 다음 작업을 수행할 수 있습니다.

1 - 로컬 분기의 이름을 마스터에서 원하는 이름으로 변경하여 제거할 수 있습니다. 2 - 이름이 바뀐 분기를 제거합니다. 3 - 마스터에서 새 분기를 만듭니다.

이제 커밋 없이 새 지점을 갖게 되었습니다.

2 - 특정 커밋 실행 취소:특정 커밋을 취소하려면 다음 방법으로 불필요한 커밋을 되돌려야 합니다.

1- 불필요한 커밋을 두 번 클릭합니다.불필요한 커밋을 두 클릭 2 - 되돌리기 클릭 되돌리기 클릭

그러나 참고로 되돌린 커밋은 되돌린 커밋과 함께 커밋 기록에 나타납니다.

서버에 대한 최근 변경사항을 푸시했다고 가정합니다.

  1. Visual Studio를 닫고 프로젝트의 로컬 복사본을 삭제합니다.
  2. Visual Studio를 열고 Team Explorer 탭으로 이동한 다음 연결 관리를 클릭합니다. (플러그)
  3. 연결 관리, 프로젝트에 연결 옆의 드롭다운 화살표를 클릭합니다.
  4. 프로젝트를 선택하고 로컬 경로를 확인한 다음 연결 버튼을 클릭합니다.

프로젝트를 다시 열면 커밋과 변경 내용이 모두 0이 됩니다.

또 다른 미친 대답이지만, 효과가 있었습니다.나는 단지 Git가 나를 매일 혼란스럽게 하기 때문에 이런 말을 합니다.

나의 경우 발신 커밋은 PR을 통해 메인으로 적절하게 병합되고 원격 메인 브랜치에 올바르게 표시되었지만, 로컬 메인은 푸시해야 하는 발신 커밋과 동일한 커밋을 보여주었습니다.

  • 메인으로 푸시할 수 없습니다...
  • 재설정(하드 또는 혼합)은 아무런 작업도 수행하지 않았습니다.

내 솔루션:저는 로컬 메인 브랜치를 삭제하고 원격 메인 브랜치를 다시 체크아웃했습니다.

팀 탐색기 탭으로 이동한 후 분기를 누릅니다.분기에서 원격/원점에서 분기를 선택합니다.예를 들어, 마스터 분기를 재설정하려고 합니다.원격/원본에서 마스터 분기를 마우스 오른쪽 단추로 클릭한 다음 재설정을 선택하고 변경 내용 삭제를 클릭합니다.이렇게 하면 로컬 분기가 재설정되고 로컬로 커밋된 모든 변경 사항이 제거됩니다.

제 해결책은 미친 짓이지만, 저에게 가장 쉬운 방법은 다음과 같습니다.

  1. Visual 스튜디오 닫기
  2. 비주얼 코드에서 열기
  3. 커밋에서 커밋 실행 취소 클릭
  4. 비주얼 코드 닫기
  5. Visual 스튜디오에서 다시 열기

로컬 마스터 분기의 기본을 원격/원본 마스터 분기로 바꾸고 프로세스에서 충돌을 해결합니다.

언급URL : https://stackoverflow.com/questions/47114113/how-to-remove-an-unpushed-outgoing-commit-in-visual-studio

반응형