Câu trả lời ngắn
Nếu bạn thực sự muốn rõ ràng và sử dụng -u
tùy chọn này khi cần thiết, nhưng không muốn nhập toàn bộ:
git push -u origin foo
Sau đó, bạn có thể sử dụng bí danh sau:
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
Và chỉ cần gõ:
git push-u
Câu trả lời dài
Thông thường, nhu cầu về -u
(viết tắt của --set-upstream
) là khi chúng ta vừa tạo một nhánh cục bộ mới và cam kết, đồng thời chúng ta muốn đẩy nó ngược dòng. Kho lưu trữ từ xa chưa có nhánh mới, vì vậy chúng ta cần yêu cầu git tạo và theo dõi nhánh từ xa trước khi đẩy cam kết. Điều này chỉ cần thiết cho lần đẩy đầu tiên trên nhánh. Đây là một kịch bản điển hình:
git checkout -b foo # Create local branch
git commit -m "Foo" # Create local commit
git push -u origin foo # Create and track remote branch, and push commit
git commit -m "Bar" # Create local commit
git push # Push commit
Cá nhân tôi thích sự cần thiết phải rõ ràng git push -u
khi tạo nhánh từ xa: đó là một hoạt động khá quan trọng, chia sẻ một nhánh hoàn toàn mới với thế giới.
Tuy nhiên, tôi ghét rằng chúng ta phải viết một cách rõ ràng git push -u origin foo
. Nó không chỉ gây khó khăn khi gõ, mà quan trọng hơn, nó khá dễ xảy ra lỗi! Bạn rất dễ mắc lỗi khi nhập tên chi nhánh và chi nhánh từ xa mới sẽ không trùng tên với chi nhánh cục bộ của bạn! Trong hầu hết các trường hợp, bạn thực sự muốn kho lưu trữ ngược dòng origin
và nhánh ngược dòng có cùng tên với nhánh cục bộ của bạn.
Do đó, tôi đang sử dụng bí danh sau trong của mình .gitconfig
, đây là một tập hợp con của câu trả lời tuyệt vời do Mark cung cấp :
[alias]
push-u = !git push -u origin $(git symbolic-ref --short HEAD)
Bây giờ, chúng ta có thể làm như sau, thao tác này vẫn rõ ràng nhưng ít bị lỗi hơn:
git checkout -b foo # Create local branch
git commit -m "Foo" # Create local commit
git push-u # Create and track remote branch, and push commit
git commit -m "Bar" # Create local commit
git push # Push commit
push.default
vàbranch.<name>.merge
trong git-config (1) không?