Có cách nào cấu hình để thiết lập điều này mà không cần phải chỉ định nhánh nào không?
Câu trả lời:
Git đã chỉ kéo nhánh hiện tại. Nếu bạn đã thiết lập nhánh làm nhánh theo dõi, bạn không cần chỉ định nhánh từ xa. git branch --set-upstream localbranch reponame/remotebranch
sẽ thiết lập mối quan hệ theo dõi. Sau đó bạn phát hành git pull [--rebase]
và chỉ nhánh đó mới được cập nhật.
Tất nhiên, tất cả các nhánh theo dõi từ xa và tất cả các giới thiệu cho điều khiển từ xa sẽ được cập nhật, nhưng chỉ nhánh theo dõi cục bộ của bạn mới được sửa đổi.
Bí danh Bash hữu ích để cắt giảm việc nhập hoạt động phổ biến này:
# Add an alias to pulling latest git changes into your same branch
alias pullhead='git pull origin $(git rev-parse --abbrev-ref HEAD)'
Hàm Powershell hoạt động tương tự:
Function pullhead {
$cur_head="$(git rev-parse --abbrev-ref HEAD)"
& git pull origin ${cur_head}
}
Tôi chỉ làm theo cách này:
git pull origin "$(git branch | grep -E '^\* ' | sed 's/^\* //g')"
hoặc là
git pull origin $(git rev-parse --abbrev-ref HEAD)
Thao tác này sẽ trích xuất nhánh hiện tại git branch
và kéo nhánh đó từ nguồn gốc từ xa.
Lưu ý, giống như Seth Robertson đã nói, khi không có đối số nào được đưa ra, chỉ nhánh hiện tại được sửa đổi nhưng tất cả các nhánh từ xa đều được tìm nạp. Tôi không muốn tìm nạp tất cả các chi nhánh ở xa, vì vậy tôi đã làm theo cách này.
git branch
không thực sự nên được phân tích cú pháp cho thông tin chi nhánh. Thông tin đó có sẵn khi git rev-parse
thực hiện lệnh:git pull origin $(git rev-parse --abbrev-ref HEAD)
git pull origin <current-branch>
vẫn là mặc định, phải không? Bạn có ngụ ý rằng các nhánh từ xa khác (ví dụ: origin / other-branch, v.v.) không được cập nhật, do đó lưu lượng truy cập bị giảm không?
git pull
bạn có thể nhận được một thông báo như thế nào There is no tracking information for the current branch. Please specify which branch you want to merge with.
. Sau đó, bạn luôn luôn kết thúc nhập git pull origin my-feature-branch
. Tôi thực sự muốn biết tình huống này xảy ra như thế nào mà không có thông tin theo dõi.
CẬP NHẬT
Câu trả lời cũ mà tôi đã thêm không hoạt động nữa: /. Nhưng sau khi nhận được một số phiếu tán thành về phiên bản PUSH mà tôi đã đặt, đối với tôi có nghĩa là câu trả lời này thực sự giúp ích cho ai đó rằng kết thúc đến đây từ các công cụ tìm kiếm, vì vậy tôi sẽ giữ câu trả lời này.
Hãy thử điều này cho phiên bản git mới:
$ git config --global push.default current
pull.default=current
. Tôi thấy rằng của tôi git clone
theo mặc định cũng được thêm vào remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
nhưng điều đó khá tiêu chuẩn.
pull.default
biến cấu hình. Đưa nó vào cấu hình git của bạn sẽ không làm được gì cả.
Có, có một cấu hình có thể được thay đổi .gitconfig
, ví dụ:
[push]
default = current
sẽ đẩy nhánh hiện tại cập nhật nhánh có cùng tên ở đầu nhận.
Kiểm tra bởi:
git config --global --get push.default
Xem: git-config .
Các --set-upstream
lá cờ là lỗi thời và sẽ bị xóa. Do đó, sử dụng--track
hoặc--set-upstream-to
Ví dụ: Nếu bạn muốn đặt thông tin theo dõi cho chi nhánh này, bạn có thể làm như vậy với:
git branch --set-upstream-to=<remote>/<branch> develop
--set-upstream-to=
vẫn được git nhắc đến khi nó không biết về thông tin theo dõi của bạn. Không đề cập đến việc không dùng nữa.
Đây là bí danh git không giả sử điều khiển từ xa origin
và xử lý nếu chi nhánh không theo dõi điều khiển từ xa.
pullh = "!f() { set -e; set -o pipefail; arr=($(git rev-parse --abbrev-ref @{u} | sed 's/\\//\\n/')); git pull ${arr[0]} ${arr[1]}; }; f"
(Tuyên bố từ chối trách nhiệm: Tôi rất là một người mới làm quen và những điều trên có thể được đơn giản hóa rất nhiều.)