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


114

실수로 Visual Studio 2017의 새 분기에서 단계적 변경 사항을 로컬 리포지토리에 푸시했습니다. 원격 저장소로 푸시되지 않았습니다. 나는 그것을 제거하고 싶지만 이것을 할 방법을 찾을 수 없습니다. 로컬 마스터 브랜치에서 새 브랜치로 리베이스했습니다. 그런 다음 새 지점을 삭제했습니다. 그러나 Outgoing Commits는 여전히 그것을 보여줍니다. 삭제하거나 되 돌리는 방법은 무엇입니까?

여기에 이미지 설명 입력


이 질문에 대한 감사, 내가 같은 질문을했다
이므 란 Rizvi

답변:


178

분기 타일의 팀 탐색기에서 기록 탭을 엽니 다 (분기를 마우스 오른쪽 단추로 클릭). 그런 다음 기록에서 푸시하지 않을 커밋 앞의 커밋을 마우스 오른쪽 단추로 클릭하고 재설정을 선택합니다. 그러면 분기가 해당 커밋으로 다시 이동하고 추가 커밋을 제거해야합니다. 주어진 커밋 이전에 재설정하려면 부모를 선택해야합니다.

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


22
** 엉망인 커밋의 PARENT에서 RESET을 선택해야하는 부분을 굵게 표시 할 가치가 있습니다. **-커밋을 한 직후 기이하게도 VS2017은 커밋을 대상으로하는 재설정을 수행하는 메뉴 옵션을 제공합니다. 당신은 방금 했어요 (no-op)-나는 당신의 게시물을 찾을 때까지 몇 분을 보냈고 부모 커밋을 Reset [To]해야한다는 것을 깨달았습니다 .. "Reset"이라는 메뉴 옵션은 약간 잘못된 단어입니다. 특정 커밋 재설정 == 해당 커밋에서 사용해야 함을 의미합니다. Reset To라면 더 빨리 이해했을 것입니다
Caius Jard

1
(@JH) 답변 감사합니다. .. atCJ 댓글 감사합니다. atJH 그 부분을 대담하게 표현 해주셔서 감사합니다 ... atEverybody .... 그게 제가 붙어 있던 부분입니다. #freedom
granadaCoder

이름은 git이 명령을 호출하는 방법과 일치합니다. 파일을 편집 한 경우 해당 파일도 재설정됩니다. 준비된 파일이있는 경우 해당 파일도 재설정됩니다. 그렇기 때문에 최신 커밋에 대한 재설정도 있습니다. 해당 커밋으로 재설정 됩니다 .
jessehouwing aug

1
알아두면 유용합니다. 답변 해 주셔서 감사합니다
Rob C

Alot It Helpssss 감사합니다
Ashish Kamble

70

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

실수로 변경 사항을 커밋 한 브랜치의 이름이 master. 네 가지 간단한 단계를 따르는 것은 나에게 세상처럼 증명되었습니다.

  1. 지점으로 이동
  2. 이외의 분기를 선택하거나 생성하십시오. master
  3. 의 로컬 / 작업 공간 버전 삭제 master
  4. 에서 마스터로 전환 remotes/origin

5
이것이 작동하는 대답입니다. 당신은 밀어 붙일 필요가 없습니다revert
sojim

2
이것은 작동하지만 발신 커밋에서 일부 (전부는 아님) 특정 커밋 만 원할 때 멈춰 있습니다.
KatariaA dec.

1
몇 개의 반대표를 받았습니다. 댓글이 좋았을 것입니다.
Chaos Legion

1
공장. 깨끗하고 빠르고 간단한 솔루션입니다.
Tom Tom

2
감사합니다! 오늘 밤까지 45 분 동안 변경 사항을 실행 취소 한 적이 없습니다. 귀하의 의견은 하루를 저장합니다.
PBJ

3

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

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

프로젝트를 다시 열면 커밋과 변경 사항이 모두 0이어야합니다.


2

TL; DR :

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


나는 오늘 그것을 직면하고 있었고 그런 VSCode것을 암시하는 압도적 인 반면 큰 형 Visual Studio은 그렇지 않습니다.

대부분의 답변이 도움이되었습니다. 이전에 만든 커밋이 더 많으면 모두 잃는 것이 답답할 것입니다. 더욱이 VSCode0.5 초 만에 그렇게한다면 복잡하지 않아야합니다.

jessehouwing의 답변 만이 간단한 해결책에 가장 가깝습니다.


원하지 않는 커밋이 마지막으로 발생했다고 가정하면 다음과 같이 해결했습니다.

Team Explorer->로 이동하십시오 Sync. 거기에서 모든 커밋을 볼 수 있습니다. Actions드롭 다운을 누르고Open Command Prompt

원하지 않는 커밋 해결 예제

cmd 창이 표시되면 git reset --soft HEAD~. 여러 바람직하지 않은 커밋이있는 경우, 이후에 금액을 추가 ~(예 git reset --soft HEAD~5)


(을 사용하지 않는 경우 git구어체 사용법을 확인하십시오).

도움이 되길 바라며, 다음 버전에서 VS 팀이 내장 기능을 추가하기를 바랍니다.


0

팀 탐색기 탭으로 이동 한 다음 분기를 클릭합니다. 지점에서 원격 / 원산지에서 지점을 선택합니다. 예를 들어, 마스터 브랜치를 재설정하려고합니다. remotes / origin의 마스터 분기를 마우스 오른쪽 버튼으로 클릭 한 다음 재설정을 선택한 다음 변경 사항 삭제를 클릭합니다. 그러면 로컬 브랜치가 재설정되고 로컬로 커밋 된 모든 변경 사항이 제거됩니다.


0

로컬 마스터 브랜치를 원격 / 원본 마스터 브랜치로 리베이스하고 프로세스의 모든 충돌을 해결하십시오.


-1

여기에는 나가는 커밋을 모두 버리거나 특정 커밋을 취소하는 두 가지 옵션이 있습니다.

1- 나가는 모든 커밋을 버립니다.

나가는 커밋을 모두 버리려면 예를 들어 원격 분기에서 master라는 로컬 분기가있는 경우 다음을 수행 할 수 있습니다.

1- 마스터에서 로컬 브랜치를 제거 할 수 있도록 이름을 변경합니다. 2- 이름이 변경된 분기를 제거합니다. 3- 마스터에서 새 분기 만들기

이제 커밋없는 새 브랜치가 생겼습니다 ..

2- 특정 커밋 실행 취소 : 특정 커밋 을 취소하려면 다음 을 수행하여 필요하지 않은 커밋을 되돌려 야합니다.

1- 불필요한 커밋을 두 번 클릭하십시오. 불필요한 커밋을 두 번 클릭하십시오. 2- 되돌리기를 클릭 하십시오. 되돌리기를 클릭하십시오.

그러나 참고로 되 돌린 커밋은 되돌리기 커밋을 사용하여 커밋 기록에 나타납니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.