2012-02-07 20 views
15

Tôi đã bắt đầu sử dụng SourceTree cách đây vài ngày để quản lý kho Mercurial với máy Mac của mình. Bây giờ tôi chạy vào vấn đề khi đẩy vào kho từ xa của tôi tạo ra một cái đầu mới trên một chi nhánh mới và tôi muốn ép buộc nó.Buộc đẩy bằng SourceTree

Tuy nhiên, tôi không thể tìm thấy bất kỳ tùy chọn cụ thể nào trong SourceTree, cho phép tôi đặt tùy chọn lực đẩy. Chỉ là tôi không có khả năng tìm thấy nó hay không có khả năng để thiết lập nó?

Cảm ơn trước Michael

+3

Đó không phải là câu trả lời của bạn (không bao giờ được sử dụng sourcetree), nhưng từ dòng lệnh, bạn nên sử dụng 'hg push --new-branch' thay vì' hg push --force'. Lý do là '--force' có thể ghi đè tất cả các loại" Bạn có chắc chắn không ?! " các thông điệp bao gồm (a) đầu mới trên nhánh hiện có và quan trọng hơn (b) các kho lưu trữ hoàn toàn không liên quan. Sử dụng '--new-branch' vẫn dừng/cảnh báo bạn trong hai trường hợp còn lại. –

Trả lời

13

SourceTree được cuối cùng sẽ thêm lực đẩy: https://jira.atlassian.com/browse/SRCTREE-1156

Lý do: https://answers.atlassian.com/questions/54469/how-do-i-perform-a-forced-push-push-f-from-sourcetree

Edit: Nó bây giờ được thêm vào trong SourceTree, nhưng bạn cần phải bật tùy chọn trên trong cài đặt.

+1

lưu ý rằng tính năng này chỉ khả dụng ở mức 1.6, chỉ ở giai đoạn beta kể từ tuần trước: http://blog.sourcetreeapp.com/2013/03/28/sourcetree-for-mac-1-6-beta/ –

+0

Bạn có chắc là nó đang ở phiên bản beta đầu tiên? Tôi không thể thấy tùy chọn và sự cố trong Jira vẫn hiển thị "đang diễn ra". – Zammbi

+1

Trạng thái Jira hiển thị là Đã đóng cho tôi, nhưng tính năng như được mô tả trong vé thực sự dường như chưa được triển khai (chưa?) Trong bản beta đầu tiên. Hy vọng trong lần thứ hai?Việc rebase tương tác (cho Git) làm cho bản beta đáng được tải xuống ngay cả khi không có lực đẩy (ít nhất là đối với tôi). –

2

SourceTree (tính ver. 1.4.2) đưa ra một hg push --new-branch khi cần thiết, vì vậy nếu bạn tạo ra một chi nhánh mới (như trái ngược với việc có hai đầu vào một chi nhánh), bạn chỉ cần thực hiện một cú đẩy thông thường (Kho lưu trữĐẩy). Bạn có thể, tùy chọn, chỉ định một nhánh bạn muốn đẩy nếu bạn có các thay đổi đi trên một số nhánh.

Tôi không thể tìm cách thực hiện một cách thích hợp hg push --force thông qua hộp thoại SourceTree. Tôi đồng ý với @ Ry4an rằng tùy chọn này nguy hiểm hơn hữu ích. Tôi đã không bao giờ thực hiện một lực đẩy kể từ khi --new-branch đã được giới thiệu, và không bao giờ cần nó để kết hợp kho không liên quan hoặc đẩy một chi nhánh hai đầu (một lực kéo là an toàn hơn nhiều).

Tôi kết luận rằng trong một dịp hiếm hoi khi một lực đẩy là cần thiết, mở Terminal sẽ không bị tổn thương. Nếu bạn không đồng ý, vui lòng chia sẻ quy trình làm việc của bạn trong các nhận xét.

+0

Tôi nghĩ tùy chọn '--new-branch' là đủ, vì chúng tôi đã thay đổi luồng công việc một chút (như bạn đã đề xuất gián tiếp;). Cảm ơn bạn đã giúp đỡ! –

+1

Tôi không chắc chắn về Mercurial, nhưng đối với Git, luồng công việc rebase khá phổ biến. Toàn bộ công ty của chúng tôi sử dụng SourceTree cho tất cả mọi thứ, nhưng thay vì kéo/hợp nhất chúng tôi thay vào đó, hãy xóa nhánh hiện tại của chúng tôi trên nhánh của nhánh mà chúng tôi muốn hợp nhất. Rebasing sử dụng SourceTree là tất cả tốt và tốt, nhưng nó vô ích khi chúng ta không thể ép buộc thay đổi của chúng tôi lên trên điều khiển từ xa của chúng tôi! Sau đó, chúng tôi phải tách thiết bị đầu cuối mở sau mỗi lần hợp nhất. Tại sao tắt các tính năng nguy hiểm, thay vì phơi bày chúng với nhiều cảnh báo? – Tim

+0

@Tim: Tôi tin rằng lực đẩy trong Git khác với lực đẩy trong Mercurial. Nếu bạn phải làm một lực đẩy sau khi rebase trong Mercurial, bạn có thể sẽ không thích kết quả (hai bản sao của cùng một chi nhánh trong repo từ xa). Đối với Git, tôi không thể nói. – Helgi

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