Làm cách nào để xóa một cam kết gửi đi chưa được đẩy trong Visual Studio?


114

Tôi đã vô tình đẩy một thay đổi theo giai đoạn trong một nhánh mới trong Visual Studio 2017 vào kho lưu trữ cục bộ của mình. Nó chưa được đẩy vào kho lưu trữ từ xa. Tôi muốn thoát khỏi nó nhưng không thể tìm ra cách để làm điều này. Tôi đã chuyển từ chi nhánh chính cục bộ sang chi nhánh mới. Sau đó, tôi đã xóa chi nhánh mới. Nhưng Cam kết đi vẫn cho thấy điều đó. Làm thế nào để xóa nó hoặc hoàn nguyên nó?

nhập mô tả hình ảnh ở đây


Cảm ơn vì câu hỏi này, tôi cũng có câu hỏi tương tự
Imran Rizvi

Câu trả lời:


177

Mở tab lịch sử trong Team Explorer từ ô Chi nhánh (bấm chuột phải vào chi nhánh của bạn). Sau đó trong lịch sử, nhấp chuột phải vào cam kết trước khi bạn không muốn đẩy, chọn Đặt lại. Điều đó sẽ chuyển nhánh trở lại cam kết đó và sẽ loại bỏ cam kết bổ sung mà bạn đã thực hiện. Do đó, để thiết lập lại trước một cam kết nhất định, bạn phải chọn cha mẹ của nó.

Tùy thuộc vào những gì bạn muốn làm với các thay đổi, hãy chọn cách khó để loại bỏ chúng cục bộ. Hoặc chọn soft sẽ hoàn tác cam kết nhưng sẽ rời khỏi thư mục làm việc của bạn với các thay đổi trong cam kết bị loại bỏ của bạn.


22
Đáng in đậm phần ** bạn phải chọn ĐẶT LẠI trên PHỤ HUYNH của cam kết lộn xộn ** - kỳ lạ là VS2017, ngay sau khi bạn thực hiện cam kết, cung cấp cho bạn một tùy chọn menu thực hiện đặt lại targetd tại cam kết bạn vừa làm (không cần chọn) - Tôi đã dành vài phút cho đến khi tôi tìm thấy bài đăng của bạn và nhận ra rằng tôi nên Đặt lại [Tới] cam kết chính .. Tùy chọn menu là "Đặt lại" hơi kém từ ngữ - nghe có vẻ như vậy đặt lại một cam kết cụ thể == ngụ ý rằng nó sẽ được sử dụng trên cam kết đó. Nếu nó được Đặt lại thành tôi nghĩ rằng tôi sẽ hiểu nó nhanh hơn
Caius Jard

1
(@JH) Cảm ơn vì câu trả lời. .. atCJ Cảm ơn bạn đã bình luận. atJH Cảm ơn bạn đã in đậm phần đó ... atEverybody .... đó là phần tôi bị mắc kẹt .... và ý tôi là bị mắc kẹt. #freedom
granadaCoder

Việc đặt tên phù hợp với cách git gọi lệnh. Nếu bạn đã chỉnh sửa tệp, những tệp đó cũng sẽ được đặt lại. Nếu bạn có các tệp theo giai đoạn, chúng cũng sẽ được đặt lại. Đó là lý do tại sao có một thiết lập lại trên cam kết mới nhất. Nó đặt lại cam kết đó .
jessehouwing

1
Hữu ích để biết. Cảm ơn vì câu trả lời
Rob C

Thanks Alot It Helpssss
Ashish Kamble

70

Tôi không thể tìm thấy một câu trả lời hay nào giúp tôi thoát khỏi vấn đề này.

Giả sử tên của chi nhánh, bạn đã vô tình cam kết thay đổi, là master. Sau bốn bước đơn giản đã chứng minh như một thế giới đối với tôi:

  1. Đi tới Chi nhánh
  2. Chọn hoặc tạo bất kỳ chi nhánh nào khác ngoài master
  3. Xóa phiên bản cục bộ / không gian làm việc của master
  4. Chuyển sang chế độ chính từ remotes/origin

5
Đây là câu trả lời mà các công trình, bạn không cần phải đẩyrevert
sojim

2
điều này hoạt động, nhưng bạn bị mắc kẹt khi bạn chỉ muốn một số (không phải tất cả) cam kết cụ thể từ Cam kết đi.
KatariaA

1
Chỉ nhận được một vài phiếu phản đối. Bình luận sẽ rất tuyệt.
Chaos Legion

1
Làm. Giải pháp sạch sẽ, nhanh chóng và đơn giản.
Tom Tom

2
OMG CẢM ƠN CÁC BẠN! Tôi chưa bao giờ mất 45 phút để hoàn tác các thay đổi, cho đến tối nay. Bình luận của bạn tiết kiệm trong ngày.
PBJ

3

Giả sử bạn đã đẩy các thay đổi gần đây nhất lên máy chủ:

  1. Đóng Visual Studio và xóa bản sao cục bộ của dự án
  2. Mở Visual Studio, chuyển đến tab Team Explorer, nhấp vào Quản lý kết nối. (phích cắm)
  3. Nhấp vào mũi tên thả xuống bên cạnh Quản lý kết nối, Kết nối với dự án
  4. Chọn dự án, xác nhận đường dẫn cục bộ và nhấp vào nút Kết nối.

Sau khi bạn mở lại dự án, cả cam kết và thay đổi sẽ bằng không.


1

TL; DR:

Sử dụng git reset --soft HEAD~trong cmd từ thư mục .sln


Tôi đã phải đối mặt với nó ngày hôm nay và bị choáng ngợp khi VSCodecho thấy điều đó, trong khi đó là anh cả Visual Studiothì không.

Hầu hết các câu trả lời đều hữu ích; nếu tôi có nhiều cam kết hơn đã được thực hiện trước đó, mất tất cả chúng sẽ rất bực bội. Hơn nữa, nếu VSCodenó thực hiện trong nửa giây, nó sẽ không phức tạp.

Chỉ câu trả lời của jessehouwing là gần nhất với một giải pháp đơn giản.


Giả sử (các) cam kết không mong muốn là lần cuối cùng xảy ra, Đây là cách tôi giải quyết nó:

Đi tới Team Explorer-> Sync. Ở đó bạn sẽ thấy tất cả các cam kết. Nhấn vào Actionsmenu thả xuống vàOpen Command Prompt

ví dụ không mong muốn-cam kết-giải quyết

Bạn sẽ có cửa sổ cmd được nhắc, ở đó viết git reset --soft HEAD~. Nếu có nhiều cam kết không mong muốn, hãy thêm số tiền sau ~(tức là git reset --soft HEAD~5)


(Nếu bạn không sử dụng git, hãy kiểm tra cách sử dụng thông tục).

Tôi hy vọng nó sẽ giúp ích, và hy vọng trong phiên bản tiếp theo, nhóm VS sẽ thêm nội dung nó


0

Chuyển đến tab Team Explorer, sau đó nhấp vào Chi nhánh. Trong các nhánh, chọn nhánh của bạn từ điều khiển từ xa / nguồn gốc. Ví dụ, bạn muốn đặt lại nhánh chính của mình. Nhấp chuột phải vào nhánh chính trong điều khiển từ xa / nguồn gốc sau đó chọn Đặt lại rồi nhấp vào Xóa thay đổi. Thao tác này sẽ đặt lại chi nhánh cục bộ của bạn và xóa tất cả các thay đổi được cam kết cục bộ.


0

Cố gắng căn cứ lại nhánh chính cục bộ của bạn vào nhánh chính từ xa / gốc của bạn và giải quyết bất kỳ xung đột nào trong quá trình này.


-1

Bạn có 2 tùy chọn ở đây để làm điều đó hoặc hủy bỏ tất cả các cam kết đi HOẶC hoàn tác cam kết cụ thể ..

1- Hủy bỏ tất cả các cam kết đi của bạn:

Để loại bỏ tất cả các cam kết đi của bạn Ví dụ: nếu bạn có chi nhánh cục bộ có tên chính từ chi nhánh từ xa, Bạn có thể:

1- Đổi tên nhánh cục bộ của bạn từ cái chính thành bất kỳ thứ gì để bạn có thể xóa nó. 2- Bỏ nhánh đã đổi tên. 3- tạo nhánh mới từ cái chính

Vì vậy, bây giờ bạn có một chi nhánh mới mà không cần cam kết của bạn ..

2- Hoàn tác cam kết cụ thể: Để hoàn tác cam kết cụ thể, bạn phải hoàn nguyên cam kết không cần thiết bằng cách:

1- Nhấp đúp vào cam kết không cần thiết. Nhấp đúp vào cam kết không cần thiết 2- Nhấp vào hoàn nguyên Nhấp vào hoàn nguyên

Nhưng FYI, cam kết hoàn nguyên sẽ xuất hiện trong lịch sử các cam kết của bạn với cam kết hoàn nguyên ..

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.