Có một số cách để thiết lập ngược dòng, trong khi đẩy hoặc không đẩy cùng một lúc.
Nếu magit-push-current-set-remote-if-missing
không phải nil
(mặc định), thì bạn sẽ thấy một cái gì đó như:
Push feature to
p pushRemote, after setting that
u @{upstream}, after setting that
e elsewhere
Để đẩy origin/feature
và đặt đó là nhấn ngược dòng uvà sau đó RETchấp nhận ứng cử viên hoàn thành mặc định.
Nếu magit-push-current-set-remote-if-missing
có nil
, thì bạn sẽ thấy điều này thay vào đó:
Push feature to
e elsewhere
Nếu bạn đã nhấn pbây giờ, thì bạn sẽ được thông báo rằng dòng ngược không được cấu hình (ngụ ý rằng bạn không thể đẩy lên thượng nguồn nếu không có ngược dòng).
Nhưng nếu magit-push-current-set-remote-if-missing
là nil
, thì danh sách các công tắc sẽ có --set-upstream
, vì vậy bạn có thể sử dụng P - u pnhư bạn đã quen (ngoại trừ p thứ hai là chữ thường). Có một điều phức tạp: sau khi thay đổi giá trị, magit-push-current-set-remote-if-missing
bạn phải khởi động lại Emacs --set-upstream
để xuất hiện hoặc biến mất.
Cuối cùng, bạn có thể thiết lập ngược dòng bằng cách sử dụng lệnh "thiết lập ngược dòng (và không làm gì khác)" : b uorigin/master
RET. Lưu ý rằng khi bạn sử dụng phương pháp này, thì bạn chỉ có thể chọn một nhánh đã tồn tại.
Nhưng nó sẽ tốt hơn để cấu hình đẩy từ xa và đẩy đến đó. Để tìm hiểu thêm về điều khiển từ xa và cách nó khác với ngược dòng, hãy xem nút Phân nhánh trong hướng dẫn thông tin (phiên bản web chưa được cập nhật).
Về cơ bản, nhánh ngược dòng là nhánh mà nhánh tính năng của bạn cuối cùng sẽ được hợp nhất (bằng cách hợp nhất hoặc nổi loạn, chứ không phải bằng cách đẩy), rất có thể origin/master
. Và điều khiển từ xa là nơi bạn đẩy các nhánh tính năng của mình đến trong khi vẫn làm việc với chúng hoặc để người khác có thể hợp nhất chúng. Nếu nhánh cục bộ được đặt tên feature
và đẩy từ xa my-fork
thì đẩy nhánh đó bằng cách sử dụng P psẽ đẩy tới my-fork/feature
. (Không thể định cấu hình "đẩy sang nhánh", tên của nhánh trên điều khiển từ xa luôn giống với tên cục bộ.)
Vì vậy, trong khi câu hỏi của bạn là một câu như "làm thế nào để tôi đẩy ngược dòng, đồng thời cấu hình ngược dòng", thì tôi khuyên bạn không nên đẩy ngược dòng lên mà thay vào đó là đẩy sang điều khiển từ xa.
Miễn là bạn không thay đổi giá trị của magit-push-current-set-remote-if-missing
bạn, bạn có thể định cấu hình đẩy từ xa bằng cách sử dụng P psome-remote
RET. Nhưng, vì bạn có thể đẩy tất cả các nhánh tính năng vào cùng một điều khiển từ xa, tốt hơn là đặt điều khiển đẩy một lần cho tất cả các nhánh và được thực hiện với nó: bvà sau đó M-pcho đến khi điều khiển từ xa bên phải được chọn.
Cũng lưu ý rằng thường không cần thiết phải thiết lập rõ ràng nhánh ngược dòng. Khi bạn tạo một nhánh mới và chọn một nhánh từ xa làm điểm bắt đầu, thì đó được sử dụng làm luồng ngược.
Thật không may, điểm bắt đầu thường là một nhánh cục bộ và trong trường hợp đó, Git theo mặc định không sử dụng nó làm thượng nguồn. Nhưng điều đó có thể dễ dàng được khắc phục bằng cách chạy này một lần:
git config --global branch.autoSetupMerge always
Giá trị mặc định là true
, có nghĩa là "đặt điểm bắt đầu là ngược dòng, miễn là nó là một nhánh từ xa ".
Nhân tiện, điều tương tự áp dụng cho điều khiển từ xa. Điều đó cũng thường được đặt bán tự động trong kho "mới". Nếu bạn sao chép một kho lưu trữ, bạn sẽ được hỏi liệu bạn có muốn sử dụng origin
làm điều khiển từ xa không. Bạn nên trả lời "có", trừ khi bạn sẽ thêm một điều khiển từ xa khác, giả sử my-fork
, nên được sử dụng làm điều khiển từ xa. Khi bạn thêm một điều khiển từ xa mới bằng cách sử dụng M avà remote.pushDefault
chưa được đặt, thì bạn sẽ được hỏi liệu bạn có muốn sử dụng điều khiển từ xa mới được thêm làm điều khiển từ xa không.
Điều này có thể được cấu hình bằng cách sử dụng magit-clone-set-remote.pushDefault
và magit-remote-add-set-remote.pushDefault
.
Một tùy chọn nâng cao khác là magit-branch-prefer-remote-upstream
, mặc định nil
. Nếu bạn đặt nó thành t
, và sau đó chọn một nhánh cục bộ làm điểm bắt đầu cho một nhánh mới, thì dòng ngược của điểm bắt đầu có thể (theo một số quy tắc, xem chuỗi doc) được sử dụng làm dòng ngược, thay vì điểm khởi đầu của chính nó.
<remote>/<branch>
phần này đã vô tình rời khỏi dấu nhắc (xem bình luận này ). Trong khi đó, bạn có thể đặtmagit-push-current-set-remote-if-missing
thành không.