2015-09-04 21 views
9

Do nhầm lẫn tôi đã thực hiện một cam kết mà bây giờ tôi muốn xóa khỏi nhật ký lịch sử và trở về cam kết trước đó. Tôi đã cố gắng để kiểm tra các cam kết mà tôi muốn quay trở lại nhưng Smartgit yêu cầu tôi tạo một chi nhánh địa phương để làm điều này (ảnh chụp màn hình đính kèm) và vì im không phải là chuyên gia với SG tôi thực sự cần một số lời khuyên. Tôi cũng đã cố gắng hoàn nguyên cam kết mà tôi đã thực hiện do nhầm lẫn nhưng tôi vẫn thấy cam kết trên nhật ký. Đây là cách log nhìn bây giờ:smartgit xóa cam kết và trở về cam kết trước

Khi cố gắng thanh toán:

enter image description here

Làm thế nào đăng nhập của tôi trông vào lúc này:

enter image description here

gì tôi muốn làm là xóa hai commit đầu tiên từ log và trở về cam kết "Cambios Varios" (cái có mũi tên màu xanh lá cây btw xuất hiện khi tôi cố gắng kiểm tra commit đó).

Tất cả sự lộn xộn này là do đồng nghiệp của tôi thực hiện một số thay đổi và thêm tệp rồi cam kết thay đổi của mình, để cập nhật tệp của tôi, nhưng tệp của tôi không được cập nhật trên kho lưu trữ cục bộ của tôi và không thêm tệp đã được thêm vào bởi đồng nghiệp của tôi. Có cái gì khác tôi phải làm để cập nhật tất cả các thư mục của tôi khi người dùng khác làm một cam kết bên cạnh PULL? Im khá mới đối với SmartGit và là một điều khiến mọi người bối rối khi cố gắng làm một việc kéo sạch. Cảm ơn nhiều !

Trả lời

8

Những gì bạn đang yêu cầu không cụ thể cho SmartGit, nhưng đối với GIT nói chung. SmartGit chỉ đơn thuần là một khách hàng, mặc dù rất thuận tiện và đầy đủ tính năng. Trong trường hợp của bạn, bạn phải đưa vào tài khoản một số tính năng GIT:

  1. Chi nhánh
  2. đăng cam kết
  3. đầu tách rời
  4. Viết lại lịch sử từ xa

Google bằng các để có được thông tin bổ sung. Bây giờ, chúng ta hãy đưa ra tên để cam kết của bạn:

enter image description here

Bạn tiếp tục thấy cam kết A, bởi vì bạn có một chi nhánh trỏ trên nó. Đây là chi nhánh địa phương của bạnmaster. Bạn có thể đặt lại nhánh này cho bất kỳ cam kết nào bạn thích. Trong SmartGit để làm điều này, chỉ cần nhấp vào nhãn nhánh màu lục đó và kéo nó đến bất kỳ cam kết nào khác. Đó là nó. Ví dụ. đặt lại nó để cam kết B, trong đó origin/master trỏ đến và bạn sẽ không còn thấy cam kết này trong nhật ký của mình nữa, vì không có chi nhánh nào có thể truy cập được.

Nói đúng ra, bạn có thể thực hiện cùng một thủ thuật với chi nhánh origin/master của mình, bạn có thể đặt lại nó cho bất kỳ cam kết nào khác. Nhưng bạn nên rất cẩn thận với nó, bởi vì nó chỉ trên một cam kết B, được xuất bản. I E. bất cứ ai cũng có thể lấy nó trên máy của họ. Nếu bạn không thể chắc chắn, bạn không thể đặt lại chi nhánh từ cam kết đã xuất bản mà không có nguy cơ vi phạm bản sao của repo của ai đó.

Vì vậy, câu trả lời đơn giản là bạn không thể hoàn nguyên bản ghi nhớ về cam kết C như bạn muốn, vì nó có thể xung đột với các bản sao chép được nhân bản trên các máy khác. Câu trả lời dài hơn là bạn có thể thử nó.

Nếu bạn chắc chắn rằng những người duy nhất có nhân bản repo này là bạn và đồng nghiệp của bạn, bạn có thể viết lại nhật ký từ xa. Để làm điều này, hãy đặt lại chi nhánh master tại địa phương của bạn trên cam kết C (bằng cách kéo & thả, như tôi đã nói trước đó) và đẩy nó. SmartGit có thể cấm bạn làm như vậy, chuyển đến Tùy chọn/Lệnh/Đẩy và bật tùy chọn "Cho phép sửa đổi các cam kết đã đẩy". Bởi vì nó nguy hiểm.

Điều này sẽ ghi lại vị trí của chi nhánh từ xa master, lấy từ máy của đồng nghiệp của bạn. Nếu anh ta không thực hiện bất kỳ thay đổi bổ sung nào cho chi nhánh này, điều này sẽ ổn thôi.

+0

"Vì nó nguy hiểm". Có nghĩa là nó có thể gây nhầm lẫn, không phải là nó có thể phá vỡ bất cứ điều gì, phải không? – endolith

+1

@endolith Có, nó sẽ không phá vỡ kho GIT, bạn không thể phá vỡ nó dễ dàng. – Mikhail

+0

cảm ơn @Mikhail, nó rất hữu ích – Ismoh

Các vấn đề liên quan